关于const_cast的一点小解

先看如下代码:

1 const int a = 5;
2 int *= const_cast<int*>(&i);
3 *= 9;
4 cout << a << endl;
5 cout << *<< endl; 

 

输出结果为5跟9,有点超出自己的意料。本来a指定为const型,但用const_cast让非常量指针能够指向a的内存空间并可修改,断点查看时a的值也确实修改为9啦,那为什么输出的时候还是为5呢?

百思不得其解,后来作为了一下反汇编后分析得到:原来虽然没使用优化,但系统还是对a这个const变量进行了预编译般的替换。所以即使原值其实已经改了,可是在输出时还是会自动替换为原值。

这到时候是C++的规范,还是它的一个Bug呢?希望有明白的人能够解释一下。 

 

 

posted on 2009-12-18 22:56  coolzgx  阅读(344)  评论(6编辑  收藏  举报

导航