四种转换运算符
const_cast
const_cast用来移除变量的const限定符或者volatile限定符。
常用于函数传参用到const变量,但是该函数参数是非const类型,需要做一个类型转换,
dynamic_cast
1、该运算符把express转换为type类型,但是type必须是类的指针、引用或者void*
2、如果type-id是类指针类型,那么exdivssion也必须是一个指针,如果type-id是一个引用,那么exdivssion也必须是一个引用。
3、dynamic_cast主要用于类中的上行转换和下行转换,还可以用于类间交叉转换
基类到子类的转换,dynamic_cast有类型检查功能,static_cast更安全。
如果基类有虚函数,使用dynamic_cast将基类转为子类会编译报错。
static_cast
用法 static_cast (express)
该运算符把express转换为type类型,但没有运行时类型检查来保证转换的安全性,主要用法如下:
1、用于基类和子类之间指针或引用的转换子类转为基类是安全的,基类转为子类没有动态类型检查,是不安全的。
2、用于基本数据类型的转换,比如int转为char等,这种转换安全性需要开发人员保证。
3、把空指针转换成目标类型的空指针。
4、把任何类型的表达式转换成void类型。
reinterpret_cast
1、指针和整数之间的转换
2、不通类型的指针、成员指针、引用之间的转换