Jan*_*egg 13 c++ constructor move move-semantics c++11
在C++ 11之前,我可以使用它来使类不可复制:
private:
MyClass(const MyClass&);
MyClass& operator=(const MyClass&);
使用C++ 11,我可以这样做:
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
使用具有已删除副本和赋值的类时,是否有可能生成默认移动运算符?而且这个类并没有被完全复制,而是被移动(这有点类似)?
那么,我是否必须这样做以防止默认移动构造和assignmnent:
MyClass(MyClass&&) = delete;
MyClass& operator=(MyClass&&) = delete;
......?
mcs*_*rep 21
正如评论中已经提到的其他人一样,删除的构造函数是在C++ 11中引入的.要回答您的问题,以下规则一般适用:
根据评论中的要求,这里有一些来源(C++ 11是草案N3242):
Jar*_*d42 12
声明复制构造函数时,不会生成移动构造函数/赋值.
所以
MyClass(MyClass&&) = delete;
MyClass& operator=(MyClass&&) = delete;
不是必需的.
您仍然可以将其添加为更明确.
| 归档时间: | 
 | 
| 查看次数: | 5401 次 | 
| 最近记录: |