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常量属性,使其可以修改.