之前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;
...?
你不需要它。就我个人而言,我把这样的东西放到一个名为'NoCopyOrMove'的私有基类中,所以它不会混乱我的代码。 – MikeMB
'MyClass(MyClass &&)= delete;'会隐式禁止其他人 – sp2danny