
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:

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

.
Weitere Aspekte
- C++ 11 – Konstruktor und Zuweisungsoperator verschieben („rule of five“)
---
Autor
Marian Wieczorek / Software Architect / Business Division Automotive Bavaria
Zum Toilet Paper #62: Copy- und Swap-Idiom (pdf)
Das könnte Sie auch interessieren:
Toilet Paper #53: Auswertungsreihenfolge in C, Objective-C und C++