static_cast 相近类型之间的类型
reinterpret_cast 不相近类型之间的类型
const_cast 去掉对象const属性的转换
dynamic_cast 规范向下转换,转换是安全的 是将一个基类对象指针(或引用)转换到继承类指针,dynamic_cast会根据基类指针是否真正指向继承类指针来做相应处理。 C++独有
若对指针进行dynamic_cast,失败返回null,成功返回正常cast后的对象指针;
若对引用进行dynamic_cast,失败抛出一个异常,成功返回正常cast后的对象引用。
【注意】:
1、dynamic_cast在将父类cast到子类时,父类必须要有虚函数,否则编译器会报错。
2、 dynamic_cast主要用于类层次间的上行转换和下行转换,还可以用于类之间的交叉转换。
在类层次间进行上行转换时,dynamic_cast和static_cast的效果是一样的;
在进行下行转换时,dynamic_cast具有类型检查的功能,比static_cast更安全
Original: https://www.cnblogs.com/LonelyMoNan/p/16749451.html
Author: lemon-Breeze
Title: C++类型转换
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606470/
转载文章受原作者版权保护。转载请注明原作者出处!