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

申祷无 2016-06-06 11:29:41
《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;的代码好像是一样的,我没仔细看。
...全文
158 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
paschen 版主 2016-06-06
  • 打赏
  • 举报
回复
只在编译期做检查而已,程序运行时没有区别
  • 打赏
  • 举报
回复
编译器编译的时候就知道i是42且不会更改,那么出现i的地方都可以直接用42替换。 不要修改const 变量,引起不必要的麻烦。
申祷无 2016-06-06
  • 打赏
  • 举报
回复
引用 1 楼 akirya 的回复:
编译器编译的时候就知道i是42且不会更改,那么出现i的地方都可以直接用42替换。 不要修改const 变量,引起不必要的麻烦。
我是用汇编单步调试的,这时候跟编译器检查没关系了吧?
赵4老师 2016-06-06
  • 打赏
  • 举报
回复
不要纠结各种常量了,这个世界上唯一不变的就是变化。用API WriteProcessMemory还能修改正运行的其它进程的内存里面的所谓常量呢!

64,631

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧