static_cast
任何具有明确定义的类型转换,只要不包含底层const,就都可以使用static_cast
ps:从一个左值static_cast到一个右值是允许的
const_cast
用来改变运算对象的底层const
ps:底层const是指指针所指的对象是一个常量
const int i=1;
const int* p=&i;
dynamic_cast
会进行类型检查,如果转换的类型不是和原类型一致或者是它的公有子类或者父类就会转换失败。
dynamic_cast<type*>(e);
如果是指针类型的转换返回结果是0,引用类型的转换失败会返回bad_cast异常。
reinterpret_cast
顾名思义,通常为运算对象的位模式提供较低层次上的重新解释,它进行转换时编译器不会报错,但在实际运行中
可能会出现问题。