Item2:尽量使用C++风格的类型转换
1.C++风格的强制类型转换的格式:
1 cast-name<type>(expression);
2.新的类型转换操作符
1)static_cast
2)const_cast
1 const char *pc; 2 char *p = const_cast<char*>(pc);
const_cast 用于“去掉表达式的"const && volatileness属性”(cast away the const and volatileness)
3)reinterpret_cast
4)dynamic_cast
用于将指向基类的指针或引用转换成指向其派生类的或兄弟类的指针或引用,而且可以知道转换是否成功。失败的转换返回NULL指针(当对指针进行类型转换),或抛出异常(当对引用进行类型转换时)。
3.为什么使用C++风格的强制类型转换而不适用旧式的类型转换?
1 type (expr); //函数形式的类型转换 2 (type) expr; //C 语言风格的类型转化
1).旧式的类型转换过于粗鲁,能够允许你在任何类型之间进行转换,不做类型检查。
2).旧式的类型转换看起来并不十分的醒目,容易看漏,类型转换本身就是一个十分危险的动作,一旦转换失误,追踪起来也比较难,用C++新型的类型转换更加的容易定位错误。

浙公网安备 33010602011771号