Umwandlungsoperator

Es gibt einen speziellen Operator: der Umwandlungs- (Konvertierungs-) Operator. Dieser wird immer dann aufgerufen, wenn ein Objekt dieser Klasse in einen anderen Typ umgewandelt werden soll.Normalerweise sollte man für Konvertierungen den Konstruktor des Zieltypes verwenden:

Typ1 t1; Typ2 t2=Typ2(t1);

Denn Typ1 kann nicht alle Typen kennen in die er konvertierbar ist - denn es kann jederzeit jemand eine neue Klasse schreiben, in die man Typ1 umwandeln können sollte.

Allerdings will man des öfteren auch in einen bestehenden Typ umwandeln, dann kann man nicht gut den Konstruktor des Zieltyps ändern. In so einem Fall kommt der Umwandlungsoperator ins Spiel:

    class Double
    {
    private:
      double val;
    public:
      Double(double d=0.0) : val(d) {}
      double get() const { return val; }
      void set(double d) { val=d; }

      operator double() const
      {
        return val;
      }
    };

    int main()
    {
      Double d=0.0;
      double d2=d;
    }
    

top