一个命名的强制类型转换具有如下形式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是非常危险的,需要对涉及的类型和编译器实现的类型转换过程非常了解