天天看点

C++ 四种转换运算符

四种转换运算符

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、不通类型的指针、成员指针、引用之间的转换

c++

继续阅读