Xir*_*dus 5 c++ default-copy-constructor move-constructor c++11
我想让一些类使用自动生成的构造函数,但是不可复制(但仍可移动).目前我这样做:
class A
{
public:
A() = default;
A(const A&) = delete;
A(A&&) = default;
A& operator=(const A&) = delete;
A& operator=(A&&) = default;
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否真的有必要这么明确.如果我这样写的话怎么办:
class A
{
A(const A&) = delete;
A& operator=(const A&) = delete;
}
Run Code Online (Sandbox Code Playgroud)
它仍然可以工作吗?对于其他情况,最小的默认值和删除集是什么 - 不可复制的非可移动类和具有虚拟析构函数的类?
是否有任何测试代码可用于快速查看隐式创建的构造函数?
这不起作用,因为不会自动为您创建默认构造函数.由于您已声明了复制构造函数,因此不会创建默认构造函数.它被定义为已删除,但它仍然是用户声明的,因此没有隐式默认的默认构造函数.
隐式创建的构造函数的精简规则是:
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |