C++强制类型转换操作符 static_cast,dynamic_cast,const_cast,reinterpret_cast

C++是兼容C的,因此C语言中的强制类型转换在C++中同样适用,具体使用方法可以参照下面的代码示例:

float valueA = 3.0f;
int valueB = (int) valueA;

可以看到,C语言中强制类型转换的一般格式为:

(类型说明符)表达式

实现的功能就是把表达式的值强制转换为类型说明符表示的类型。

除了这种强制类型转换方法外,C++还提供了四种类型转换方法,分别为

  • static_cast<类型说明符>(表达式)
  • C++强制类型转换操作符 static_cast - melonstreet - 博客园static_cast是一个强制类型转换操作符。强制类型转换,也称为显式转换,C++中强制类型转换操作符有static_cast、dynamic_cast、const_cast、reinterperthttps://www.cnblogs.com/QG-whz/p/4509710.html
  • dynamic_cast<类型说明符>(表达式)
  • C++强制类型转换操作符 dynamic_cast - melonstreet - 博客园dynamic_cast是四个强制类型转换操作符中最特殊的一个,它支持运行时识别指针或引用。>>>>>>>>>>>编译器的RTTI设置https://www.cnblogs.com/QG-whz/p/4517336.html
  • const_cast<类型说明符>(表达式)
  • C++强制类型转换操作符 const_cast - melonstreet - 博客园const_cast也是一个强制类型转换操作符。《C++ Primer》中是这样描述它的:1.将转换掉表达式的const性质。2.只有使用const_cast才能将const性质性质转化掉。试图使用其https://www.cnblogs.com/QG-whz/p/4513136.html
  • reinterpret_cast<类型说明符>(表达式)
  • C++类型转换之reinterpret_cast - 知乎C++是兼容C的,因此C语言中的强制类型转换在C++中同样适用,具体使用方法可以参照下面的代码示例: float valueA = 3.0f; int valueB = (int) valueA;可以看到,C语言中强制类型转换的一般格式为: (类型说明符)…https://zhuanlan.zhihu.com/p/33040213

static_cast和dynamic_cast详解_的博客-CSDN博客_static_cast类继承关系图注:从图中可以看出,派生类不仅有自己的方法和属性,同时它还包括从父类继承来的方法和属性。当我们从派生类向基类转换时,不管用传统的c语言还是c++转换方式都可以百分百转换成功。但是可怕是向下转换类型,也就是我们从基类向派生类转换,当我们采用传统的C语言和c++转换时,就会出现意想不到的情况,因为转换后派生类自己的方法和属性丢失了,一旦我们去调用派生类的方法和属性那就糟糕了,这就是对类继承关https://blog.csdn.net/u014624623/article/details/79837849 

你可能感兴趣的:(C++,c++)