Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/161.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我们需要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 - Fatal编程技术网

为什么我们需要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