Ch06-C++ 之 keyword
April 24, 2022
static_cast
,dynamic_cast
,const_cast
,reinterpret_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);