深入理解C++对象模型之类型转换:ReinterpretCast
来源:互联网 发布:手机淘宝怎么买二手 编辑:程序博客网 时间:2024/06/05 15:53
在C++中,没有任何一种转换操作符可以将成员指针转换成其它类型数据类型,那有没有办法获取到成员指针的值呢?有的人会说可以通过sprintf,atoi等函数获取.那有没有更简单通用的方法呢?答案是有的.我们可以通过template 和 union实现任何类型到另一兼容类型的(所谓兼容是指,两种类型的大小一致)转换操作符 ReinterpretCast<Dest,Src>.
在给出这一实现之前,我们先来先来探讨一下另外一个实用宏: StaticAssert.
StaticAssert宏是利用这样一个语法事实:不能将sizeof应用于任何非完全类型.下面是StaticAssert的实现:
接下来我们会给出ReinterpretCast<Dest,Src>的实现:
下面我们来写一小段测试代码:
输出:
未经允许,请勿转载.
Copyright © SammyLan
- 深入理解C++对象模型之类型转换:ReinterpretCast
- 深入理解C语言类型转换
- JavaScript深入理解之强制类型转换
- C语言 unsigned 和 signed 类型相互转换深入理解
- [深入理解C++(一)]类型转换(Type Casting)
- [深入理解C++(一)]类型转换(Type Casting)
- [深入理解C++(一)]类型转换(Type Casting)
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- [深入理解C++(一)]类型转换(Type Casting)
- C语言 unsigned 和 signed 类型相互转换深入理解
- C语言 unsigned 和 signed 类型相互转换深入理解
- 【深入理解计算机系统】【C表达式类型转换顺序】
- 深入理解Struts2----类型转换
- 深入理解C++对象模型之构造函数
- 深入理解C++对象模型之拷贝构造函数
- 深入理解C++对象模型之Data Member存取成本
- BeginPaint和GetDC有什么区别?
- 2010年4月8日——来cameo一年了!
- Silverlight 4中的RichtextBox的使用
- 线程优先级
- 2010.4.8 做一个简单网站看发的DAL帮助类代码
- 深入理解C++对象模型之类型转换:ReinterpretCast
- 嗨
- 3.6.3 每张表一个子类
- GCC简易教程
- Java 读写Excel
- 节点的删除 - 同时删除所有绑定要节点上的对象
- Ogre实现天龙地形
- 智能手机的开放与封闭刍议
- 七步详细分析Oracle表空间