Ch06-C++ 之 keyword

Ch06-C++ 之 keyword

April 24, 2022
C++ | Basic
c++

static_castdynamic_castconst_castreinterpret_cast

1. static_cast #

用于各种隐式转换,比如 void*ptr*

double a = 1.0f;
int b = static_cast<double>(a);

void* vptr = &a;
double* dptr = static_cast<double*>(vptr);

2. dynamic_cast #

安全的向下进行类型转换。只能用于含有虚函数的类,只能转指针或引用。

Derived *pd = new Derived();
Base* pb1 = dynamic_cast<Base*>(pd);

3. const_cast #

用来移除变量的 const 或 volatile 限定符。

const int a = 21;
const int* p = &a;
int* q = const_cast<int*>(p);

4. reinterpret_cast #

用于位的简单重新解释,允许将任何指针转换为任何其他指针类型,并不安全。

int a = 9;
double b = reinterpret_cast<double>(a);