【发布时间】:2014-05-18 13:32:13
【问题描述】:
我想让一些类使用自动生成的构造函数,但不可复制(但仍可移动)。目前我正在这样做:
class A
{
public:
A() = default;
A(const A&) = delete;
A(A&&) = default;
A& operator=(const A&) = delete;
A& operator=(A&&) = default;
}
我想知道是否真的有必要如此明确。如果我这样写会怎样:
class A
{
A(const A&) = delete;
A& operator=(const A&) = delete;
}
它仍然可以正常工作吗?其他情况下的最小默认值和删除集是什么 - 不可复制的不可移动类和带有虚拟析构函数的类?
是否有任何测试代码可以用来快速查看隐式创建的构造函数?
【问题讨论】:
-
为什么要让类不可复制?是因为它有不可复制的成员吗?在这种情况下,该类无论如何都是不可复制的。
标签: c++ c++11 move-constructor default-copy-constructor