首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ Const_cast有关问题

2013-10-04 
C++ Const_cast问题请有空的看一下以下代码:const int TEST 21coutTESTendlconst int* pCstInt &T

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的值是有改变的,为什么结果显示出来没有改变,求解!C++ Const_cast有关问题

不能这样写,对于为什么输出是21,这个也很好理解,

cout<<TEST<<endl;这句话其实真实的代码被编译器优化的,因为你定义const TEST,所以对于cout << TEST,编译直接认为是个TEST常量21,也就是说cout << TEST这句话其实不会读取TEST这块的内存,编译器直接认为是TEST是21,就像宏一样。

[解决办法]


不能这样写,对于为什么输出是21,这个也很好理解,

cout<<TEST<<endl;这句话其实真实的代码被编译器优化的,因为你定义const TEST,所以对于cout << TEST,编译直接认为是个TEST常量21,也就是说cout << TEST这句话其实不会读取TEST这块的内存,编译器直接认为是TEST是21,就像宏一样。


应该是这样,不同编译器应该有不同实现的,
[解决办法]
楼主把两个指针的值打出来看看

热点排行