c++显示类型转换cast

  1. static_cast:具有明确定义的类型转换(不能转换底层const)<1>基本类型之间的转换int/float/double/unsigned int<2>指针和void*之间互转<3>派生类指针/引用转换为基类指针/引用<4>在非vitual继承下,基类指针/引用转换为派生类指针/引用(多继承会做偏移处理)
  2. const_cast:改变运算对象的底层const,去掉或者增加const,volatile特性
  3. reinterpret_cast:通常为运算对象的位模式提供较底层次上的重新解释,多继承不会做偏移处理
  4. dynamic_cast:支持运行时类型识别,常用于基类指针转向派生类指针,专门用于处理多态机制,指针转换不成功,返回空;引用转换不成功会抛出异常;对于菱形非virtual继承、非public继承,转换引用时也会抛出std::bad_cast异常;使用dynamic_cast进行运行期动态类型转换,这需要开启编译器的RTTI,开启RTTI会影响程序性能

c类型强制转换调用顺序:

  1. const_cast
  2. static_cast
  3. static_cast then const_cast
  4. reinterpret_cast
  5. reinterpret_cast,then const_cast

c++语言不是类型安全的

发布了51 篇原创文章 · 获赞 2 · 访问量 860

猜你喜欢

转载自blog.csdn.net/YRC333/article/details/98489489
今日推荐