今天在回顾C++的const_cast的时候无意写了这样一段代码:
#include<iostream>
using namespace std;
int main(){
const int i=100;
int *p=const_cast<int *>(&i);
(*p)++;
cout<<p<<" "<<&i<<endl;
cout<<*p<<" "<<i<<endl;
}
101 100
结果分析如下:
1、首先给出const_cast的说明,《C++ primer》第五版中这样写道:“const_cast只能改变运算对象的底层const。如果对象本身不是一个常量,使用强制类型转换获得写权限是合法行为。然而如果对象本身是一个常量,再使用const_cast执行写操作就会产生未定义的行为。”