Vor 11 C++, ich diese verwenden könnte eine Klasse nicht kopierbar zu machen:Machen Sie eine Klasse nicht-kopierbaren * und * unbewegliche
private:
MyClass(const MyClass&);
MyClass& operator=(const MyClass&);
Mit C++ 11, kann ich es tun dies wie statt:
MyClass(const MyClass&) = delete;
MyClass& operator=(const MyClass&) = delete;
Wenn die Klasse mit der gelöschten Kopie und Zuordnung verwendet, gibt es eine Chance, dass ein Standard-Bewegung Operator erzeugt wird? Und die Klasse wird nicht genau kopiert, sondern bewegt (was ist irgendwie ähnlich)?
Also, ich habe dies zu tun Standard bewegen Bau und assignmnent zu verhindern:
MyClass(MyClass&&) = delete;
MyClass& operator=(MyClass&&) = delete;
...?
Sie brauchen es nicht. Persönlich habe ich sowas in eine private Basisklasse namens 'NoCopyOrMove' gesteckt, damit es meinen Code nicht durcheinander bringt. – MikeMB
'MyClass (MyClass &&) = delete;' wird die anderen implizit deaktivieren – sp2danny