可能重复:
Does a const reference prolong the life of a temporary?返回临时对象,并结合const引用
我的编译器不抱怨为const参考分配临时:
string foo() {
return string("123");
};
int main() {
const string& val = foo();
printf("%s\n", val.c_str());
return 0;
}
为什么?我认为从foo
返回的字符串是临时的,val可以指向哪个对象的生命周期已经完成。 C++标准是否允许这样做并延长返回对象的生命周期?
是的,只要是** const **参考,临时的生命周期就会延长。 – chris 2012-07-19 11:56:47
这不完全是2784262的副本,它应该处理引用是类成员的情况。行为是不同的。 – aberaud 2014-11-29 20:54:55
@aberaud不仅这不是重复的,这是一个更好的问题,我很高兴我找到了。 – dashesy 2016-07-01 14:30:51