在C++中常见的一种模式是将复制构造函数设为私有:
class A
{
public:
// ...
private:
A(const A&);
};
但是以下代码是否能够在 C++11/14 中编译:
A f();
auto a = f();
这个标准包含有关自动生成移动构造函数的信息。我既没有访问该标准的权限,也没有能够实际生成移动构造函数的编译器。我的问题是:我是否必须编写
class A
{
public:
// ...
private:
A(const A&);
A(const A&&);
};
是否同样要防止移动 (并且操作符= 的行为也类似)?
delete
构造函数/赋值运算符(例如,ClassName(ClassName &&)= delete;
)显式防止隐式移动构造函数。 - syam