6.9. 类型转换
Tip
使用 C++ 的类型转换, 如 static_cast<>()
. 不要使用 int y = (int)x
或 int y = int(x)
等转换方式;
定义:
C++ 采用了有别于 C 的类型转换机制, 对转换操作进行归类.
优点:
C 语言的类型转换问题在于模棱两可的操作; 有时是在做强制转换 (如(int)3.5
), 有时是在做类型转换 (如(int)"hello"
). 另外, C++ 的类型转换在查找时更醒目.
缺点:
恶心的语法.
结论:
不要使用 C 风格类型转换. 而应该使用 C++ 风格.- 用至于static_cast
替代 C 风格的值转换, 或某个类指针需要明确的向上转换为父类指针时.- 用const_cast
去掉const
限定符.- 用reinterpret_cast
指针类型和整型或其它指针之间进行不安全的相互转换. 仅在你对所做一切了然于心时使用.dynamic_cast
参见 6.8. 运行时类型识别.