关于C++中的reinterpret_cast

关于C++中的reinterpret_cast

功能:
1.指针和整数之间的转换
2.不同类型的指针/成员指针/引用之间的转换。

reinterpret_cast是四种强制转换中最为强大的,它可以暴力完成两个完全无关类型的指针之间或指针和数之间的转换。比如用char类型指针指向double值,例子:

double a = 12.1;
char* b = reinterpret_cast<char*>(&a);//将a以二进制(位模式)方式解释为char,并赋给b;
double* c = reinterpret_cast<double*>(b);
std::cout << *c;//12.1

reinterpret_cats对原始对象的位模式提供较低层次上的重新解释(即reinterpret),完全复制二进制比特位到目标对象,转换后的值与原始对象无关但比特位一致,前后无精度损失。

由于转换后没有精度损失,所以把一个指针转换成整数,再把该整数转换为原类型的指针,仍可得到原指针的值。

比如开辟了系统全局的内存空间,需要在多个应用程序之间传递这个空间的指针时,就可以将指针转换成整数值,得到以后再将值转换成指针进行对应的操作。但它本质上是一个编译期指令,实际动作可能取决于编译器,虽然功能最强但封建最大,且失去了移植性。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值