Toilet Paper 62

Copy- und Swap-Idiom

Problem

Man möchte eine C++-Klasse schreiben, die laut „rule of three“ einen benutzerdefinierten Destruktor, einen Copy-Konstruktor und einen Zuweisungsoperator verlangt. Sorgen rufen hierbei Code-Duplizierung, Korrektheit und die Exception-Sicherheit hervor.

Lösung

Das Copy- und Swap-Idiom verwendet den Copy-Konstruktor und eine Swap-Funktion, um den Zuweisungsoperator sicher zu implementieren. Ein Nachteil dabei ist, dass die Zuweisung jetzt eine Kopie erfordert. Allerdings sollte bedacht werden, spät zu optimieren!

Beispiel

Ein Gegenbeispiel, das Code dupliziert, dabei Selbstzuweisung vermeiden muss und nicht Exception-sicher ist:

ToiletPaper #62: Copy- und Swap-Idiom: Bild 1

Die Swap-Funktion, der Copy-Konstruktor und der Zuweisungsoperator des Copy- und Swap-Idioms:

ToiletPaper #62: Copy- und Swap-Idiom: Bild 2

.

Weitere Aspekte

  • C++ 11 – Konstruktor und Zuweisungsoperator verschieben („rule of five“)

---

Autor

Marian Wieczorek / Software Architect / Business Division Automotive Bavaria

Das könnte Sie auch interessieren:

Cookie-Einstellungen

Diese Website verwendet Cookies, um Inhalte und Anzeigen zu personalisieren, Funktionen für soziale Medien anbieten zu können und Zugriffe auf die Website zu analysieren. Zudem werden Informationen zu Ihrer Verwendung der Website an Partner für soziale Medien, Werbung und Analysen weitergegeben. Die Partner führen diese Informationen möglicherweise mit weiteren Daten zusammen, die Sie ihnen bereitgestellt haben oder die sie im Rahmen Ihrer Nutzung der Dienste gesammelt haben.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. Dort können Sie nachträglich auch Ihre Cookie-Einstellungen ändern.

contact icon

Kontakt aufnehmen