Der Kopierkonstruktor

Wenn Du für eine Klasse selbst keinen Kopierkonstruktor definieren, wird dieser vo Compiler automatisch erzeugt. Er wird dazu verwendet, um bei der Erzeugung eines neuen Objektes den Inhalt eines anderen Objektes in das neue zu kopieren. Wenn der Compiler den Kopierkonstruktor für Dich definiert, kopiert dieser einfach den Inhalt Byte für Byte, was möglicherweise nicht genau das ist, was Du willst. Für einfache Klassen ohne Zeiger reicht der Standard-Kopierkonstruktor aus, aber in diesem Beispielprogramm haben wir einen Zeiger auf ein Element der Klasse und eine Kopie Byte für Byte würde auch diesen Zeiger einfach kopieren. Das würde dazu führen, daß beide Objekte auf dieselbe Adresse im Speicher und damit dieselbe Variable zeigen. Für unsere Klasse deklarieren wir den Kopierkonstruktor in der Zeile 13, die Implementation erfolgt in den Zeilen 33 bis 38. Wenn Du Dir die Implementation etwas genauer ansiehst, wirst Du feststellen, daß das neue Objekt in der Tat eine Kopie des alten ist, aber mit einer eigenen Zeichenkette. Da beide, der Konstruktor und der Kopierkonstruktor, dynamisch Speicherplatz beschaffen, müssen wir sicherstellen, daß dieser Speicher auch wieder freigegeben wird, wenn die Objekt zu existieren aufhören. Deshalb ist es notwendig, eine Destruktor bereitzustellen, dessen Implementation in den Zeilen 49 bis 52 dieses Beispielprogrammes zu finden ist. Den Kopierkonstruktor verwenden wir in Zeile 83.

(weiter...)