C++11类型转换



1. static_cast<type>(var)
将var的类型转换为type。 普通的强制类型转换,系统不会做任何检查。程序员保证类型转换的正确性。


2. dynamic_cast<type>(ptr)
ptr必须是一个指针或地址。将ptr所指的类转换为type。ptr是一个基类的指针类型,type是衍生类。系统在执行时进行检查,如果类继承性关系存在,那么dynamic_cast<type>(ptr)返回一个type*的指针,否则返回nullptr。


3. const_cast<type *>(ptr)
ptr的类型为const type*。const_cast<type *>(ptr)去掉了const,返回type*类型的指针。


4. reinterpret_cast<type>(var)
将var按照该type类解释,var的bit不发生变化。注意:static_cast<type>(var)是会引起bit变化的,例如从double->int,int->double,等等。


reinterpre_cast<type>(var)的应用范围:
从指针类型到一个足够大的整数类型
从整数类型或者枚举类型到指针类型
从一个指向函数的指针到另一个不同类型的指向函数的指针
从一个指向对象的指针到另一个不同类型的指向对象的指针
从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针
从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值