Konstruktoren

In den bisherigen Beispielen wurde die Elementfunktion Init dazu verwendet, die Datenelemente eines Objekts zu initialisieren. Damit man den Aufruf einer solchen Initialisierungsfunktion nicht versehentlich vergisst, kann man in C++ sogenannte Konstruktoren definieren. Der Compiler akzeptiert dann die Definition eines Objekts nur, wenn dabei ein Konstruktor aufgerufen wird.

Ein Konstruktor ist eine Elementfunktion der Klasse, die dadurch charakterisiert ist, dass sie denselben Namen wie die Klasse hat. Er darf keinen Rückgabetyp haben (auch nicht void). Eine Klasse kann mehrere Konstruktoren haben. Diese müssen sich dann wie alle anderen überladenen Funktionen durch hinreichend verschiedene Parameter unterscheiden. Die Parameter können auch Default-Argumente haben.

Ein Konstruktor wird in den folgenden Situationen automatisch aufgerufen:

class C2DPunkt{
  double x,y;
 
  public:
  C2DPunkt(double x_)
    { // ein Parameter: x-Wert
    x=x_;
    y=0;
    }
 
  C2DPunkt(double x_, double y_)
    {
    x=x_;
    y=y_;
    }
};

Damit können folgendermaßen Objekte dieser Klasse definiert werden:

  C2DPunkt p(3); // p=(3,0)
  C2DPunkt q(5,6); // q=(5,6)

Dagegen wird diese Definition vom Compiler nicht akzeptiert:

  C2DPunkt p;//Fehler: Keine Übereinstimmung für
  // 'C2DPunkt::C2DPunkt()' gefunden

Die beiden Konstruktoren von C2DPunkt können auch durch einen einzigen mit einem Default-Argument ersetzt werden:

class C2DPunkt{
  double x,y;
  public:
  C2DPunkt(double x_, double y_=0)
    {
    x=x_;
    y=y_;
    }
};