A. C风格类型转换就像粗鲁的野兽,可以通过它们在任意类型之间进行转换。如果能够更明确地指定每个转换的目的,可能会更好。
B. C风格类型转换很难进行查找。
C++通过引入4种新的类型转换操作符客服了C风格的类型转换的缺点。这4种操作符是:
1.static_cast: 与通用的C风格类型转换,基本上有着同样地能力和意义。
static_cast
int firstNum,secondNum;
double result = ((double)firstNum)/secondNum;
// 使用新的类型转换,应该这样写:
double result = static_cast<double>(firstNum)/ 2.const_cast: 最常用法,去除掉一个对象的const属性。
3.dynamic_cast: 用来针对一个继承体系做向下或者横向的安全转换。
dynamic_cast
// SpecialWidget继承于Widget
Widget *pw;
update( dynamic_cast<SpecialWidget*>(pw) );
// fine, passes to update a pointer
// to the SpecialWidget pw points to
// if pw really points to one,
// 4.reinterpret_cast: 最常见用法是在函数指针之间进行类型转换。