Member-Initialisierung, Definition von Member-Inhalten bei Aufruf
von Konstruktoren.
< Klasse>::< Klasse>(...) : Member1( Wert1), ... ,
MemberN( WertN)
Wert können dabei auch beliebige, bereits deklarierte, Funktionen
oder komplexe Ausdrücke sein.
Beispiel::Beispiel() : i(0), j(1)
Die Member-Initialisierung ist die einzige Möglichkeit,
konstante Member zu initialisieren!
Member-Inhalte können auch im Funktionskörper des Konstruktors
zugewiesen werden. Im Gegensatz zur Member-Initialisierung ist eine
Wertzuweisung für konstante Member hier nicht möglich.
Grundsätzlich sollten alle Member, soweit möglich, über
Member-Initialisierung definiert werden.
schlechtes Beispiel:
Beispiel::Beispiel(int a,int b) { i = 2*(a/2); j = 2*((b+1)/2)-1; }
Copy-Konstruktor , Konstruktor zur Erzeugung
einer Kopie eines Objektes.
Der Copy-Konstruktor einer Klasse wird aufgerufen bei Definitionen
( Beispiel a = b ) oder ,,Call-by-Value``-Übergabe eines Objektes an eine
Funktion.
class Beispiel { . . Beispiel(Beispiel&); . . } Beispiel::Beispiel(Beispiel& a) { i = a.i; j = a.j; } main() { Beispiel a(1,2); Beispiel b = a; /* a wird kopiert und b} zugewiesen */ }