Wir verwenden Cookies, um unsere Webseite für Sie zu optimieren. Mit dem Besuch unserer Webseite erklären Sie sich damit einverstanden. // Our website is using cookies to improve your experience. By continuing to browse the site, you are agreeing to our use of cookies.

Weitere Informationen finden Sie in unserer Datenschutzerklärung. // For more information, please refer to our privacy policy.

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: