关于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呢?希望有明白的人能够解释一下。 

 

 

你可能感兴趣的:(Const)