- Dreierregel
-
Die Dreierregel, auch bekannt als Die Große Drei oder Regel der Großen Drei bezeichnet in C++ eine Daumenregel, die besagt, dass, wenn eine Klasse oder ein Struct eines der folgenden drei definiert, meistens auch die anderen beiden definiert werden sollten[1]:
Diese werden automatisch vom Compiler generiert, können aber mit einer explizit durch den Programmierer definierten Version ersetzt werden. Wird das für eine dieser Funktionen gemacht, so bedeutet das, dass die compilergenerierte Version der entsprechenden Funktion den Anforderungen der Klasse nicht genügt. Daraus lässt sich schließen, dass das wahrscheinlich auch bei den restlichen dieser drei Funktionen der Fall ist.
Grund für diese Begebenheit ist die Tatsache, dass compilergenerierte Funktionen in vielen Fällen nicht ausreichen, um bestimmte Aufgaben zu erfüllen. Beispielsweise wenn die Klasse aus Objekten anderer Klassen zusammengesetzt ist, welche ausschließlich von ihr verwendet werden (Komposition). Die compilergenerierte Variante kopiert nur die Zeiger auf die Objekte (shallow copy). Eine Manipulation des kopierten Objekts würde dann auch das Original beeinflussen, da beide auf dieselben Teilobjekte zugreifen. In einem solchen Fall ist der Kopierkonstruktor wichtig um auch die Teilobjekte zu kopieren (deep copy). Gleicherweise wird beim Löschen des Objektes der Destruktor benötigt, um die Teilobjekte ebenfalls zu löschen.
Die Regel kann auch auf andere objektorientierte Sprachen wie z.B. C# angewandt werden.
Einzelnachweise
- ↑ Bjarne Stroustrup: The C++ Programming Language, 3, S. 283-4, Addison-Wesley 2000, ISBN 978-0201700732
Literatur
- Stanley B. Lippman, Josèe Lajoie, Barbara E. Moo: C++ Primer. 4. Auflage. Addison-Wesley Professional, 2005. ISBN 978-0201721485
Wikimedia Foundation.