You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

去除const转换后修改绑定到const引用的临时对象是否为UB?

代码是否存在未定义行为?

这段代码不存在未定义行为,原因如下:

  • 首先,static_cast<int const&>(42)会将字面量42(类型为非const的int纯右值)绑定到const左值引用,此时会创建一个临时的int对象(注意这个临时对象本身是非const的),引用的生命周期会延长至该语句结束。
  • const_cast<int&>仅移除了引用的const限定,并没有改变临时对象本身的非const属性——因为对象本身是可修改的,所以通过转换后的非const引用对其赋值21是完全合法的操作。

简单来说:临时对象本身不是const的,只是借助const引用来访问它,去掉引用的const限定后修改对象,符合C++标准的规定,不属于未定义行为。

内容的提问来源于stack exchange,提问作者user24551355

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 14:11:11