C++类型强制转换

一个命名的强制类型转换具有如下形式cast-name<type>(expression)
type是转换的目标类型,expression是要转换的值,cast-name是如下的一种

  • static_cast
  • dynamic_cast
  • const_cast
  • reinterpret_cast

static_cast
任何具有明确意义的转换,只要不包含底层const,都可以使用static_const,当需要把一个较大的算术类型赋值给较小的类型时,static_const非常有用

dynamic_cast
dynamic_cast用于支持运行时的类型识别(RTTI),将基类的指针和引用安全地转换成派生类的指针和引用

const_cast
const_cast只能改变运算对象的底层const(去掉const),只有const_cast能改变表达式的const属性

reinterpret_cast
reinterpret_cast通常为运算对象的位模式提供较低层次上的重新解释,使用reinterpret_cast是非常危险的,需要对涉及的类型和编译器实现的类型转换过程非常了解

猜你喜欢

转载自blog.csdn.net/lancelot0902/article/details/90737044