Um das Kopieren meiner Klasse zu deaktivieren, soll ich als privat deklarieren, aber nicht definieren operator=(const MyClass&)
und MyClass(const MyClass&)
- muss ich auch move ctor für diese Klasse deaktivieren?Move ctor dilemma
2
A
Antwort
5
Es ist noch offen, ob Bewegungskonstruktoren implizit generiert werden (und wann).
Siehe this PDF von Stroustrup vom 2010-10-17 mit dem Untertitel Sollten Verschiebeoperationen standardmäßig generiert werden?
BTW, in C++ 0x können Sie = delete
Funktionen eher als sie priviate undefined machen.
class non_copyable {
public:
non_copyable(const non_copyable&) = delete;
non_copyable& operator=(const non_copyable&) = delete;
};
0
vom VS 2010 documentation Zitiert:
Im Gegensatz zu den Standard-Copykonstruktor, der Compiler bietet keine Standard bewegen Konstruktor.
Also für VS 2010 ist es nicht notwendig, das zu verstecken. Sie diskutieren nicht speziell Standard-Zuweisungsoperatoren, aber ich nehme an, dass sie auch keine generieren werden.
Verwandte Themen
- 1. Move Constructor aufrufende Basisklasse Move Constructor
- 2. 'Übersetzung' Dilemma
- 3. Linq Dilemma
- 4. Erwartete ctor
- 5. Move-Konstruktor und Initialisierungsliste
- 6. Move-Konstruktoren und Vererbung
- 7. sizeof() Und Vorlage Argument In Ctor/Non-Ctor Funktion
- 8. C++ Delegieren Ctor und Eltern Ctor mit dem Argument
- 9. Kompass Genauigkeit Dilemma
- 10. bootstrap Bildschirmgrößen Dilemma?
- 11. Python Fluch Dilemma
- 12. Tomcat maxThread Wert Dilemma
- 13. WPF SolidColorBrush Dilemma
- 14. HAML: form_tag Dilemma
- 15. Methode Parameter Dilemma
- 16. Matlab RGB-Werte Dilemma
- 17. RESTful API Sortierung Dilemma
- 18. Methode Erstellung Dilemma
- 19. GUI Border Dilemma
- 20. Codeignit URL Dilemma
- 21. PHP: Code-Design Dilemma
- 22. Ctor nicht erlaubt Rückgabetyp
- 23. System.Data.OleDb.OleDbConnectionIntern..ctor: Unbekannter Fehler
- 24. SQL Server: Aggregat Funktion Dilemma
- 25. ASP.NET MVC und jQueryUI Dilemma
- 26. Mehrere Vererbung Dilemma in C++
- 27. JavaScript touchend versus click dilemma
- 28. JAXB Rangier-/unmarshalling Nullpointer Dilemma
- 29. Windows 7 TextureBrush..ctor() Fehler
- 30. Aufruf ctor mit geschweiften Klammern
Vielen Dank für Ihre Antwort. Leider arbeite ich an VS2010 und sie haben immer noch delete construct nicht implementiert. Gut zu wissen sowieso. –
@There, das ist in Ordnung, sie haben nicht die Standardgenerierung von Move-Konstruktoren implementiert, so dass Sie sie nicht explizit deaktivieren müssen. – Motti