强制类型转换
C++有四种强制类型转换运算符:
static_cast: 可用于基本类型的转换,或者将指针转换为其他基本类型的指针,如:
1
2int i = 10;
double d = static_cast<double>(i);dynamic_cast: 用于基类和派生类之间的转换,包含了类型检查,只有在确定安全的情况下才会进行转换,否则就会
return nullptr
;dynamic_cast
只能用于含有虚函数的类,且只能用于指针或引用。const_cast: 用于修改类型的 const 和volatile 修饰词,对于 const 变量,可使用 const_cast 去除 const属性,然后才能改变变量的值;
1
2
3const int i = 10;
int* p = const_cast<int*>(i);
*p = 20;reinterpret_cast: 是一种底层的强制类型转换,可以将任意类型的指针转换为任何其他类型的指针,reinterpret 会对变量进行机器(位)级别的重新解释,不进行任何类型检查和转换,属于非常危险的操作。
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment