感谢感谢!! 我明白您的意思,move这个我应该可以理解,我的困惑在于new出来的unique_ptr是左值还是右值。从auto x = unique_ptr<string>(new string("Hello")); 看来,“=”右边的
表达式因为是个“匿名”对象,所以编译器视其为右值,虽然随其所在函数的返回,“匿名”的unique_ptr对象会释放其资源,但我们不能视其为将亡值,因为在函数结束前,已经通过:
auto x = unique_ptr<string>(new string("Hello")); 将其资源截获,所以本质上其是个右值。