C++通过引进四个新的类型转换操作克服了C风格类型转换的缺点,1.static_cast, const_cast, dynamic_cast和reinterpret_cast
static_cast<type> (expression)
int i,j;
double result = static_cast<double>(i/j);
不能用static_cast把struct转换成int类型或者把double类型转换成指针类型,另外,static_cast不能从表达式中去除const属性,需要用const_cast
2.const_cast用于类型转换掉表达式的constnes
和volatilenss属性
但是如果试图使用const_cast来完成修改constnes和
volatilenss属性之外的事情,类型转换将被拒接。
3.dynamic_cast用于安全的沿着类的继承关系向下进类型转换,也就是将指向基类的指针或者引用转换成指向其他派生类或者其兄弟类的指针或引用。
4.reinterpret_cast最普通而且用途就是在函数指针类型进行转换,其转换结果几乎都是执行期定义的,使用
reinterpret_cast代码很难移植。
本文整理自more effecvie C++ ITEM02