为什么 const 和非 const 的汇编代码一样,const 的却能保证不被修改呢

C++语言 码拜 8年前 (2016-04-20) 992次浏览
《C++ Primer》第五版,中文版。145 页。

 const int i = 42;//int i = 42;
    cout << i << endl;
    const int *p = &i;
    *const_cast<int *>(p) = 0;
    cout << i << endl;

const int i = 42; 与 int i = 42;的代码好像是一样的,本人没仔细看。

解决方案

7

编译器编译的时候就知道i是42且不会更改,那么出现i的地方都可以直接用42替换。
不要修改const 变量,引起不必要的麻烦。

14

只在编译期做检查而已,程序运行时没有区别

6

不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明为什么 const 和非 const 的汇编代码一样,const 的却能保证不被修改呢
喜欢 (0)
[1034331897@qq.com]
分享 (0)