为什么我们需要std::move-in构造函数';谁的初始化列表? 我正在阅读Scott Meyer的有效的现代C++,在其第25条中有这样的例子: class Widget { public: Widget(Widget&& rhs) : name (std::move(rhs.name)), p(std::move(rhs.p) { ... } ... }
我这里的问题是为什么我们需要为什么我们需要std::move-in构造函数';谁的初始化列表? 我正在阅读Scott Meyer的有效的现代C++,在其第25条中有这样的例子: class Widget { public: Widget(Widget&& rhs) : name (std::move(rhs.name)), p(std::move(rhs.p) { ... } ... },c++,c++11,C++,C++11,我这里的问题是为什么我们需要std::move作为rhs.name?由于rhs已经是一个右值,这不意味着rhs.name也是一个右值,所以我们可以安全地移动它吗?由于rhs有一个名称,它不再是右值 然后您可以使用 std::move(rhs.name) 或 转换(转换)name为右值引用。右值引用是左值 std::move(rhs).name
std::move
作为rhs.name
?由于rhs
已经是一个右值,这不意味着rhs.name
也是一个右值,所以我们可以安全地移动它吗?由于rhs
有一个名称,它不再是右值
然后您可以使用
std::move(rhs.name)
或
转换(转换)
name
为右值引用。右值引用是左值
std::move(rhs).name