强制类型转换
- C++中为了兼容C语言,
(目标类型)源类型
依然可以使用,但C语言中的强制类型转换安全性差,因此建议使用C++中的强制类型转换 - C++之父认为如果代码设计的完善,根本不需要用到强制类型转换,而C++的强制类型转换之所以很复杂,是为了让程序员多关注代码本身的设计,尽量少使用
- C++中的强制类型转换保证没有很大的安全隐患
static_cast<目标类型>(源类型)
- 编译器对源类型和目标类型做兼容性检查,如果不通过则报错
dynamic_cast<目标类型>(源类型)
- 编程器会判断原类型和目标类型是否同为指针或引用,并且存在多态型的继承关系
const_cast<目标类型>(源类型)
- 编译器会对源类型和目标类型是否同为指针或引用,除了常属性以外其他必须完全相同否则报错
reinterpret_cast<目标类型>(源类型)
- 编译器会对源类型和目标类型是否为指针和整数进行检查,也就是说把整数转换成指针或把指针转换成整数