第十一课 新的类型转换
一、C语言中的强制类型转换
方式
- (type)(expression)
- type(expression)
缺点
-
过于粗暴
任意类型hi见都可以进行转换,编译器很难判断其正确性
-
难以定位问题
在源码中无法快速定位所有使用强制类型转换的语句
二、C++中的强制类型转换
4种强制转换类型
-
static_cast
用于基本类型间的转换(int、double、float)
不能用于基本类型指针间的转换
用于有继承关系类对象之间的转换和类指针之间的转换
-
const_cast
用于去除变量的只读属性
强制转换的目标类型必须是指针或者引用
-
dynamic_cast
用于有继承关系的类指针间的转换
用于有交叉关系的类指针间的转换
具有类型检查功能
需要虚函数的支持
-
reinterpret_cast
用于指针类型间的强制转换
用于整数和指针类型间的强制转换
使用方法:xxx_cast<type>(expression)
三、小结
-
C 方式强制类型转换
过于粗暴
潜在问题不易被发现
不易在代码中定位
-
新类型转换以C++ 关键字的方式出现
编译器能够帮助检查潜在问题
非常方便在代码中定位
支持动态类型识别(dynamic_cast)