C++ 各类型转换及关键字

  volatile关键字

  表示该变量易变,每次在访问该关键字修饰的变量时都要读内存,不对其进行优化。

  mutable关键字

  类的常成员函数在语义上是不允许修改类的成员变量的,但是有时候可能根据代码的需要并不是这么绝对。那么就可以使用mutable声明一个类的成员变量,它告诉编译器类的常成员函数可以修改这个变量。

  explicit关键字

  修饰构造函数,通常用作 构造函数静止隐式转换。

  四种类型转换

  1. const_cast

  去掉类型的const或volatile属性。

const int a=10;
int &b=const_case<int&>(a);

  2. static_cast

  静态类型转换,用于类型间强制转换。用于:

  (1)基类和子类转换,子类指针转父类是安全的,父类转子类不安全。

  (2)基本数据类型转换。

  (3)空指针转换成目标类型指针。

  (4)转换为void类型

int n=1;
double  d=static_cast<double>(n);
int *pn=&n;
double *d=static_cast<double*>(&n);
void *p = static_case<void*>(pn);

  

  3.dynamic_cast

  动态类型转换,运行时类型安全检查(转换失败返回NULL)

  1.安全基类和子类转换,基类转子类会失败。

  2.必须有虚函数。

  3.相同基类不同子类间转换,结果为NULL。

   4.reinterpret_cast

  重新解释类型,没有进行二进制转换。

  一般用在函数指针类型之间转换。

原文地址:https://www.cnblogs.com/wshr007/p/11505658.html