|
static_cast 和 reinterpret_cast 操作符修改了操作数类型. 它们不是互逆的; static_cast 在编译时使用类型信息执行转换, 在转换执行必要的检测(诸如指针越界计算, 类型检查). 其操作数相对是安全的. 另一方面, reinterpret_cast 仅仅是重新解释了给出的对象的比特模型而没有进行二进制转换, 例子如下: int n=9; double d=static_cast < double > (n); 上面的例子中, 我们将一个变量从 int 转换到 double. 这些类型的二进制表达式是不同的. 要将整数 9 转换到 双精度整数 9, static_cast 需要正确地为双精度整数 d 补足比特位. 其结果为 9.0. reinterpret_cast 的行为却不同: int n=9; 这次, 结果有所不同. 在进行计算以后, d 包含无用值. 这是因为 reinterpret_cast 仅仅是复制 n 的比特位到 d, 没有进行必要的分析. 因此, 你需要谨慎使用 reinterpret_cast.
|
static_cast 和 reinterpret_cast
最新推荐文章于 2023-11-27 19:55:01 发布
本文探讨了C++中static_cast和reinterpret_cast的区别与应用。static_cast在编译时使用类型信息执行转换并进行必要检测,而reinterpret_cast仅重新解释对象的比特模型。此外,还讨论了reinterpret_cast在函数指针类型转换中的作用。
1263

被折叠的 条评论
为什么被折叠?



