【发布时间】:2011-06-17 21:03:39
【问题描述】:
考虑以下几点:
struct X
{
Y y_;
X(const Y & y) :y_(y) {}
X(Y && y) :y_(std::move(y)) {}
};
为了充分利用移动语义,是否有必要定义像第二个这样的构造函数?还是会在适当的情况下自动处理?
【问题讨论】:
-
隐式生成移动构造函数或赋值运算符in certain circumstances。由于您在此处声明了一个复制构造函数,因此您还必须自己声明和定义一个适当的移动构造函数。但是,您可以删除这两者并在您的特定情况下具有相同的行为。
-
@James:方便的信息。但是,我没有在这里定义复制构造函数。我定义了一个从 Y 到 X 的构造函数。
-
哦。很抱歉,我只看到了字母,并认为它们都是一样的。
标签: c++ c++11 rvalue-reference move-semantics