C 的强制类型转换不会进行类型检查,统统都是
Type b = (Type)a
所以C 的强制类型转换不安全。
2. C++的强制类型转换
C++ 提供了四种类型转换操作来应对不同的场合:
- static_cast:用于内置的数据类型之间的转换,和具有继承关系的指针或者引用之间的转换。
- dynamic_cast:将子类指针或者引用转成父类指针或者引用。
- const_cast:增加或去掉变量的const性,变量可以是内置类型指针、引用、对象指针
- reinterpret_cast:用于转换无关的指针类型,包括函数指针之间都可以转换
可见,C++ 的四种强制类型转换在转换之前会进行类型检查,比 C 更加安全。