C++虽然集成了C语言的explict cast和implict cast策略,但是作为一门更现代的语言,C++额外提供了一些类型检查,如检查指针和基础类型的转换,基类和派生类的转换等来提高编程的安全性。
主要有const_cast
,reinterpret_cast
,static_cast
,dynamic_cast
。其中const_cast
主要用于处理const
修饰,功能单一,可以看作一类,其他三类可以看作另一类。
const_cast
const_cast
一般用于强制修改一个类型的读写权限,例如实现常量到变量引用的转换,以实现修改一些常量的目的。强制转换的类型必须是指针或引用。const int v = 1;
int &mutv = std::const_cast<int&>(v);
mutv++;
const int *p = 1;
int *mutp = std::const_cast<int*>(p);
(*mutp)++;