C++四种类型转化
2018-08-02 (星期四)
C++类型转换:
static_cast提供编译时期静态类型检测:
static_cast <type-id> (expression)
1)完成基础数据类型
2)同一个继承体系中类型的转化
3)任意类型与空指针类型void*之间的转化
4)在执行转化必要的检测(指针越界,类型检查),其操作数相对是安全的.
dynamic_cast提供运行时检测,使用多态的场景,增加了一层对真实调用对象类型的检测:
1)用于继承体系中进行安全的向下转换downcast
2)dynamic_cast是四个类型转化中唯一的RTTI操作符,提供运行时类型检查.
3)dynamic_cast不是强制类型转化,而是带有某种"咨询"性质的,如果不能转化,返回NULL
4)源类中必须要有虚函数,保证多态,才能使用.
reinterpret_cast:
仅仅是复制ni的比特位到d_r,没有进行必要的分析,reinterpret_cast是为了映射到一个完全不同类型的意思,这个关键词在我们需要把类型映射回元类型时用到它.他是所有转化中最危险的.
const_cast
去掉const常量属性,使其可以修改.
我每天都在努力,只是想证明我是认真的活着.