Aufruf und Auswahl von Konstruktoren

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:

Dabei wird zuerst automatisch ausreichend Speicher beschafft für alle Elemente des Objekts (also mindestens 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