可能重複:
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