static_cast
- 基础数据类型转换(基本类型)
- 同一继承体系中类型的转换(父子类型)
- 任意类型与空指针(void *)之间的转换(指针类型)
dynamic_cast
执行派生类指针或引用与基类指针或引用之间的转换。
- 其他三种都是编译时完成的,dynamic_cast是运行时处理的,运行时要进行运行时类型检查;
- 基类中要有虚函数,因为运行时类型检查的类型信息在虚函数表中,有虚函数才会有虚函数表;
- 可以实现向上转型和向下转型,前提是必须使用public或protected继承;
const_cast
- 只能对指针或者引用去除或者添加const属性
- 对于变量直接类型不能使用const_cast
- 不能用于不同类型之间的转换,只能改变同种类型的const属性
reinterpret_cast
从字面意思理解是一个“重新解释的类型转换”。也就是说对任意两个类型之间的变量我们都可以个使用reinterpret_cast在他们之间相互转换,无视类型信息。不推荐使用。
原文链接: https://www.cnblogs.com/woshidaan-caw/p/12702383.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;
也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/342000
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!