对临时对象的const引用进行const强制转换会导致未定义行为吗?

Will const-casting a const reference of a temporary cause undefined behavior?

本文关键字:const 未定义 临时对象 引用 转换      更新时间:2023-10-16

c++允许将临时对象绑定到const引用,从而延长其生命周期。我的问题是:如果我通过常量转换来修改对象,这是未定义的行为吗?让我们假设我的新引用的寿命不会比原来的const-reference长,因此它将始终指向内存中的有效对象。

如果它调用未定义的行为,为什么?对象存在于堆栈中,如果我可以读取它,为什么不能修改它?我理解为什么这可能是一个坏主意,因为临时将很快被销毁,但它是无效的c++吗?在我的测试中,我的程序在修改了临时的

后运行良好。

如果想延长临时类型的生命周期,使其成为非const类型,只需将其绑定到右值引用即可。不要做不必要的强制转换。

相关文章: