【发布时间】:2012-07-18 14:35:37
【问题描述】:
可能重复:
Does a const reference prolong the life of a temporary?
我的编译器不会抱怨将临时分配给 const 引用:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
为什么?我认为从foo 返回的字符串是临时的,并且 val 可以指向生命周期已结束的对象。 C++ 标准是否允许这样做并延长返回对象的生命周期?
【问题讨论】:
-
是的,只要是 const 引用,临时对象的生命周期就会延长。
-
这不完全是 2784262 的副本,它(应该)处理引用是类成员的情况。行为不同。
-
@aberaud 这不仅不是重复的,而且我很高兴找到了一个更好的问题。