3. 常量转换
常量转换(const_cast) 是只用于移除或添加 const(或volatile) 修饰符的转换。它只能改变 const 属性。
常量转换不能改变对象的类型本身,只能改变其 const 属性。主要用于需要调用不修改对象的非 const 常成员函数的场景。
注意 移除
const属性后对原本就是const定义的对象进行写操作是未定义行为。
语法
const_cast<新类型>(表达式)
示例
// filename: const_cast.cpp
#include <iostream>
using namespace std;
int main(int argc, char * argv[]) {
const int c = 100;
int & rc = const_cast<int&>(c);
cout << "c:" << c << "rc:" << rc << endl;
rc = 200; // 为定义的行为(结果不确定)。
cout << "c:" << c << "rc:" << rc << endl;
return 0;
}
编译和运行结果如下:
weimz@mzstudio:~/old$ g++ -o const_cast const_cast.cpp
weimz@mzstudio:~/old$ ./const_cast
c:100rc:100
c:100rc:200