Operator-Syntax: Beispiel 2 (2/2)

Im Beispiel könnte man etwa die Typumwandlungen

  int -> complex

sowie

  double -> complex

implementieren und bräuchte dann nur noch einmal den Operator * zu definieren, nämlich für den Typ complex. Tritt dann bei dem Aufruf der Operatorfunktion ein double-Wert auf, so wird dieser zunächst über die implementierte Typumwandlung in einen complex-Typ umgewandelt; anschließend wird mit diesem complex-Typ die Operatorfunktion aufgerufen.

Schaut man sich das Beispiel etwas genauer an, so stellt man fest, daß die erste der beiden Typumwandlungen gar nicht implementiert zu werden braucht. In C++ existiert von vornherein eine implizite Typumwandlung int -> double!

Allerdings kann der Einsatz von Typumwandlungen, insbesondere bei großen Objekten, zu erheblichen Laufzeitnachteilen führen. Man sollte daher jedes Mal abwägen, ob es nicht doch eher sinnvoll ist, den betroffenen Operator jeweils für jeden Datentyp einzeln oder zumindest für gewisse Gruppen einzeln zu definieren. Hierdurch hätte man dann die Möglichkeit, die Eigenschaften der verschiedenen Datentypen gezielt auszunutzen und den Programmablauf zu optimieren. Wir werden an anderer Stelle in diesem Kapitel auf dieses Problem zurückkommen.