深入理解C++对象模型之类型转换:ReinterpretCast

 

C++,没有任何一种转换操作符可以将成员指针转换成其它类型数据类型,那有没有办法获取到成员指针的值呢?有的人会说可以通过sprintf,atoi等函数获取.那有没有更简单通用的方法呢?答案是有的.我们可以通过template 和 union实现任何类型到另一兼容类型的(所谓兼容是指,两种类型的大小一致)转换操作符 ReinterpretCast<Dest,Src>.

在给出这一实现之前,我们先来先来探讨一下另外一个实用宏: StaticAssert.

StaticAssert宏是利用这样一个语法事实:能将sizeof应用于任何非完全类型.下面是StaticAssert的实现:

接下来我们会给出ReinterpretCast<Dest,Src>的实现:

下面我们来写一小段测试代码:

 

输出:

 

未经允许,请勿转载.

Copyright © SammyLan

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值