C++的数据转换方式reinterpret_cast, static_cast, dynamic_cast和const_cast
const_cast:仅用于去掉完全同类型的const,volatile约束,不能含有任何其它类型的转换,若不含约束也可以相当于没转换
static_cast:使用类型可在继承的方向上向上或向下转换,不进行安全检查。
子类转父类,值、引用、指针形式均可,其中指针还可以是常量
父类转子类,值不可以,引用和指针均可,子类中的多余成员值是乱码
不支持不同无关类之间的转换
dynamic_cast:动态转换,使用类型可在继承的方向上向上或向下转换,进行安全检查。
子类转父类,值不可以,引用、指针均可,其中指针还可以是常量
父类转子类,值不可以,引用可通过编译,但运行失败。指针可通过编译,该转换也能运行,但是后面再调用方法时会检查类型,判断是否失败。
不同无关类之间的转换均不能运行,但多态类可通过编译
reinterpret_cast:强制类型转换,不改变原有数据,只是重新解释内存
子类转父类,值不可以,引用、指针形式均可,其中指针还可以是常量
父类转子类,值不可以,引用和指针均可,子类中的多余成员值是乱码
不同无关类之间的转换,值不可以,引用和指针均可,重新解释内存
转:https://www.cnblogs.com/fancy-xt/p/5339177.html
1、static_cast
int ret = static_cast<int>(level)
把level转化为int,level可能是枚举类型
长风破浪会有时,直挂云帆济沧海!
可通过下方链接找到博主
https://www.cnblogs.com/judes/p/10875138.html