之前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