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可能是枚举类型

 

posted @ 2020-07-09 16:20  朱小勇  阅读(203)  评论(0编辑  收藏  举报