C++中的reinterpret_cast
reinterpret_cast用于任意类型的转换。
reinterpret_cast 允许将任意指针转换到其他指针类型,也允许任意整数类型和任意指针类型之间的转换。转换时,执行的是逐个比特复制的操作。
reinterpret_cast的用法:
1 | reinpreter_cast<type-id> (exp) |
其中 type-id 类型必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。
例如,Android 源码 android_hardware_SensorManager.cpp 的一个方法:
1 | static jboolean |
方法中将整数形的 jlong sensorManager
转换成了一个指针 SensorManager* mgr
。
总结:
- reinterpret_cast 用于任意类型的转换,和其它强制转换一样,存在安全性;
- 用法中 type-id 类型必须是一个指针、引用、算术类型、函数指针或者成员指针。它可以把一个指针转换成一个整数,也可以把一个整数转换成一个指针。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Jona's Blog!