C++ Const_cast问题
请有空的看一下以下代码:
const int TEST= 21;
cout<<TEST<<endl;
const int* pCstInt= &TEST;
int* modifier = const_cast<int*>(pCstInt);
*modifier = 7;
cout<<TEST<<endl;
为什么输出结果中TEST没变(用VS编译):
21
21
调试了一下,发现TEST的值是有改变的,为什么结果显示出来没有改变,求解!
不能这样写,对于为什么输出是21,这个也很好理解,
cout<<TEST<<endl;这句话其实真实的代码被编译器优化的,因为你定义const TEST,所以对于cout << TEST,编译直接认为是个TEST常量21,也就是说cout << TEST这句话其实不会读取TEST这块的内存,编译器直接认为是TEST是21,就像宏一样。
[解决办法]