C ++允许将临时绑定到const-reference,从而延长其生命周期。我的问题是:如果我通过const-cast来修改对象,那么这个未定义的行为是什么?让我们假设我的新引用不会比原始的const引用更长,因此它总是指向内存中的有效对象。
如果它确实调用了未定义的行为,那为什么呢?对象存在于堆栈中,如果我能读取它为什么我不能修改它?我理解为什么这可能是一个坏主意,因为临时将很快被销毁,但它是无效的C ++?在我的测试中,我的程序在修改临时函数后运行正常。
答案 0 :(得分:6)
如果要延长临时的生命周期以使其不是常量,只需将其绑定到右值引用即可。不要做不必要的铸造。