花间一壶酒412 2023-06-21 07:34 采纳率: 50%
浏览 19
已结题

求解const_cast的底层实现原理,为什么对常量指针使用后无法改变常量的值

为什么对一个const int指针使用const_cast,将他的值赋值给一个int,通过这个int指针改变常量的值时,编译器通过, 但是输出常量的时候仍然是原来的值,把int指针通过*解引用输出是改变之后的值

img

  • 写回答

2条回答 默认 最新

  • Minuw 2023-06-21 08:47
    关注

    const 的机制,就是在编译期间,用一个常量代替了 data。这种方式叫做常量折叠。
    常量折叠与编译器的工作原理有关,是编译器的一种编译优化。在编译器进行语法分析的时候,将常量表达式计算求值,并用求得的值来替换表达式,放入常量表。

    常量折叠只对原生类型起作用,对我们自定义的类型,是不会起作用的。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月29日
  • 已采纳回答 6月21日
  • 创建了问题 6月21日

悬赏问题

  • ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
  • ¥50 如何将脑的图像投影到颅骨上
  • ¥15 提问一个关于vscode相关的环境配置问题,就是输入中文但是显示不出来,代码在idea可以显示中文,但在vscode不行,不知道怎么配置环境
  • ¥15 netcore使用PuppeteerSharp截图
  • ¥20 这张图页脚具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯