我想知道为什么返回局部对象的const reference
是非法的,而只要将其分配给const reference
返回局部对象
就是合法的?
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引用分配给返回的本地变量的const引用也应该是合法的,对吧?