我想知道爲什麼返回本地對象的const reference
是非法的,而只要您將它分配給const reference
就返回local object
是合法的?返回常量引用vs臨時對象
vector<int> f_legal() {
vector<int> tempVec;
tempVec.push_back(1);
return tempVec;
}
const vector<int>& f_illegal() {
vector<int> tempVec;
tempVec.push_back(1);
return tempVec;
}
void g() {
const vector<int>& v1 = f_legal(); // legal
const vector<int>& v2 = f_illegal(); // illegal
}
編輯: 我的觀點是,如果分配一個const裁判返回的本地變量是合法的,那麼不應該指定一個const裁判的局部變量返回的常量裁判是合法的呢?
@Ed Heal是的,它在C++中定義良好,本地const引用將延長它所綁定的臨時對象的生命週期。 –
@EdHeal是的,這是合法的。標準中有一個特殊情況,只要在當前範圍內有一個const引用,就會保持本地對象的活動。 –