C++11中的四种类型转换
static_cast
- 基础数据类型转换(基本类型)
- 同一继承体系中类型的转换(父子类型)
- 任意类型与空指针(void *)之间的转换(指针类型)
dynamic_cast
执行派生类指针或引用与基类指针或引用之间的转换。
- 其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行运行时类型检查;
- 基类中要有虚函数,因为运行时类型检查的类型信息在虚函数表中,有虚函数才会有虚函数表;
- 可以实现向上转型和向下转型,前提是必须使用public或protected继承;
const_cast
- 只能对指针或者引用去除或者添加const属性
- 对于变量直接类型不能使用const_cast
- 不能用于不同类型之间的转换,只能改变同种类型的const属性
reinterpret_cast
从字面意思理解是一个“重新解释的类型转换”。也就是说对任意两个类型之间的变量我们都可以个使用reinterpret_cast在他们之间相互转换,无视类型信息。不推荐使用。
版权声明:本文为woshidaan-caw原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。