为何C++临时对象调用成员函数后提前析构?求编译器行为解析
临时对象生命周期延长的疑问
我编写了如下代码,对Test类的临时对象调用链式成员函数:
const auto &t2 = Test().withT1().withT2(); testParam(t2);
这段代码中,调用withT1()和withT2()后,临时对象会立即析构,导致传入testParam的t2指向已析构的对象。
但如果直接将临时对象绑定到引用,不调用这些成员函数:
const auto &t2 = Test(); testParam(t2);
临时对象会被正确绑定到引用t2,其生命周期会延长至当前块作用域结束。
恳请帮忙解释编译器为何会有这样的行为?
内容的提问来源于stack exchange,提问作者51k
相关产品推荐
相关产品推荐

