四种类型转换
const_cast<>
仅适用于指针,引用或者this指针
将const类型专为非const,是四个类型转换唯一一个可以转const的
static_cast<>
风险性较小的转换,适用于:
整形与浮点型 字符与整型 转换运算符 空指针–>其他类型指针
不可以用于风险较高的转换
对类进行类型转换的时候需要记得重载
如:指针之间互换,指针与整型,不同类型的引用转换
dynamic_cast<>
只用于基类与派生类之间的指针或引用转换
- 基类必须有虚函数
- 运行时检查,转型不成功则返回一个空指针
- 没有必要时候不要使用
dynamic_cast
,有额外的函数开销
常见的转换方式:
-
reinterpret_cast<>
- 不同类型指针之间 –
char* & int*
- 不同类型引用之间
- 指针和能容纳指针的整数类型之间的转换
- 不同类型指针之间 –
-
编译器处理执行的是逐字节复制的操作
-
类似于显式强转
一般常用的是static_cast<>; dynaminc_cast<>常见于继承;reinterpret_cast使用需要谨慎,因为是强显性;const_cast<>唯一一个可以处理const的类型