Im Gegensatz zu anderen Methoden können weder der Konstruktor noch der Destruktor aus normalem Programmcode heraus explizit aufgerufen werden.
Der Aufruf genau eines Konstruktors findet automatisch statt, wenn die Lebensdauer eines Objekts im Speicher beginnt:
new
Speicher für
ein Objekt beschafft wird (Freier Speicher new und delete)
new[]
Speicher für
ein Feld von Objekten beschafft wird.
sizeof(
Objekt)
Bytes); dann erst
erfolgt der Konstruktoraufruf. Innerhalb des Konstruktors kann also
auf alle Elemente zugegriffen werden. Die
Memberfunktionen können alle angesprochen werden.
Da man den Konstruktor ebenso wie andere Funktionen und Methoden mit verschiedenen Parameterlisten überladen kann, kann man einem Objekt beim Erzeugen gleich passende Parameter mit auf den Weg geben. Dies geschieht bei Variablen durch Angabe der Parameter beim Definieren in Klammern hinter dem Variablennamen, bei new dagegen hinter dem Typnamen:
class Auto { private: int AnzahlRaeder; double Motorleistung; public: // Defaultkonstruktor: Auto() { Motorleistung = 0.0; AnzahlRaeder = 4; } // überladener Konstruktor: Auto( double LeistungKW, int nRad = 4 ) { Motorleistung = LeistungKW; AnzahlRaeder = nRad; } }; int main( int nargs, char **args ) { Auto Golf; // 4 Räder, keine Leistung Auto Ferrari( 250.0 ); // 4 Räder, 250kW Auto UnfallFerrari( 0.0, 3 ); // 3 Räder, keine Leistung (mehr) Auto *pLKW = new Auto( 300.0, 10 ); // dicker Brummer // ... }
AnyWare@Wachtler.de