Benutzerdefinierte Typumwandlung: Konstruktoren (1/3)

Die erste Alternative besteht in der geeigneten Deklaration eines Konstruktors, der z.B. zu einem gegebenen double ein complex erzeugt:

  class complex {
      // ...
      complex(double r) { re = r; im = 0; }
  };

Die Implementierung des Konstruktors wurde dabei gerade so vorgenommen, daß er der traditionellen Einbettung der reellen Zahlen in die komplexe Ebene entspricht, d.h. über die Zerlegung in einen reellen und einen imaginären Teil.

Wird nun an irgendeiner Stelle im Programm ein Objekt der complex-Klasse erwartet und steht dort statt eines complex-Typs z.B. ein double, so wird stets der Konstruktor aufgerufen, da es mit diesem möglich ist, aus dem angegebenen Wert bzw. Typ ein Objekt der Klasse zu erzeugen.

Mit dem hier angegebenen Konstruktor können auch Integer-Werte in den Komplex-Typ überführt werden; hierzu wird der int-Typ zunächst via impliziter Typumwandlung nach double umgewandelt, anschließend wird der Konstruktor aufgerufen.