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.