分开副本/移动分配操作员
Separating copy/move assignment operator
我已经在这里阅读:在次级标题下移动语义是什么:特殊成员函数,我们应该统一复制分配运算符&amp&的原因将分配运算符移动到单个MOVE 复制分配操作员
但是,如果我们希望禁止复制或移动怎么办?在这种情况下,我应该在禁止的构造函数上指出"已删除"并实现另一个?(即在两者之间分开)。
如果是这样,什么是正确的方法?
如果要创建一个可移动但不可复制的类,则应实现MOVE构造函数并将复制构造函数标记为已删除。
复制和汇款模式仍然有效(实际上,更多的是移动和交换)。由于只能构造参数,因此只能进行移动分配。
class MyClass
{
MyClass(MyClass&& other) {
// Do your move here
}
MyClass(const MyClass& other) = delete;
MyClass& operator=(MyClass other) {
// You can still use copy-and-swap (move-and-swap, really)
// Since MyClass is non-copyable, only move assignment will be available
}
};
或者您可以改用移动分配运算符(MyClass& operator=(MyClass&& other)
)。如果您声明移动构造函数。
相关文章:
- 为什么我不能拥有纯虚拟分配操作员?
- 从私人矢量中公开访问和分配操作员
- C 分配操作员助手
- C BigInteger和分配操作员超载
- 复制构造函数和复制分配操作员
- 复制构造函数和分配操作员对循环依赖类别的过载
- 分开副本/移动分配操作员
- 复制分配操作员定义
- 不清楚的副本分配操作员示例
- C 复制分配操作员问题
- 虚拟分配操作员不允许static_cast
- 在班级中使用动态分配的C风格字符串,并带有复制和分配操作员,给出了意外的结果
- std :: vector :: erase(item)需要为项目定义的分配操作员
- 分配操作员返回值类型
- 分配操作员返回
- 为什么分配操作员没有发生 RVO?(C++)
- 为什么我的副本分配操作员从未被调用
- C++自动,不明白如何分配操作员?
- 自动分配操作员构造
- 为什么我的分配操作员不处理自我分配