请帮助理解下面的内容
class Demo {};
Demo && fun() {
Demo d;
cout << "Addres of d in fun " << &d << endl;
return move(d);
}
int main()
{
Demo && d = fun()
}
这是返回对象的正确方法吗??
最佳答案
返回对局部变量的引用是未定义的行为,所以不,这段代码不正确。
返回对象的正确方法是返回纯右值:
Demo fu(n) {
Demo d;
return d; // "move(d)" is implied
}
Demo && d = fun(); // OK, reference binds to temporary and extends its lifetime
关于C++ 右值和移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31838467/