我想知道为什么返回本地对象的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引用,就会保持本地对象的活动。 –