我刚刚听完了Scott Meyers关于C++ 0x的软件工程电台播客采访.大多数新功能对我来说都很有意义,我现在对C++ 0x感到兴奋,除了一个.我仍然没有得到移动语义 ......它们究竟是什么?
我想知道为什么返回const reference本地对象是非法的,而返回a local object是合法的,只要你将它分配给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
}
Run Code Online (Sandbox Code Playgroud)
编辑:我的观点是,如果将const ref赋给返回的局部变量是合法的,那么不应该将const ref分配给局部变量的返回const ref也是合法的吗?