Initialisieren, Kopieren und Zuweisen
Was bedeutet das?
- Compiler generiert automatisch Kopier-Konstruktor und
Zuweisungs-Operator mit korrekten Aufrufen der Kopier-Konstruktoren bzw.
Zuweisungs-Operatoren
- für die Elemente (aggregierte Objekte) eines Objektes x
von X
- für die Objekte der Basisklassen von X
- sind in den Klassen der aggregierte Objekte bzw. in den
Basisklassen von X Kopier-Konstruktor oder/und Zuweisungs-Operator
explizit definiert, werden diese aufgerufen
- ist kein Kopier-Konstruktor oder/und Zuweisungs-Operator
explizit definiert, wird auch hier wieder standardmässig elementweises
Kopieren bzw. Zuweisen eingesetzt
shallow copy
Wann gibts Probleme?
- (indirekte) Aggregation von Elementen (per Pointer)
- bei shallow copy wird Pointer per Wert kopiert; keine Kopie
der indirekt aggregierten Objekte!
deep copy muß explizit definiert werden!