Operator-Syntax: Beispiel 2 (1/2)

Die Operator-Notation stellt also -- wie bereits mehrfach erwähnt -- eine bequeme Kurzform für den expliziten Funktions-Aufruf dar.
Möchte man einen Operator für seine Klasse definieren (z.B. der Operator * für die Klasse complex), so ist dieser Operator für jeden Datentyp, auf den er zusammen mit dem Objekt angewendet werden soll, einzeln zu definieren:

  class complex {
  // ...
  public:
      // ...
      complex operator*(complex);    // Multiplikation mit einem complex-Datentyp
      complex operator*(double);     // Multiplikation mit einem double
      complex operator*(int);        // Mutltiplikation mit einem Integer
      ...
  }

Da der Implementierungsaufwand bereits in diesem einfachen Beispiel sehr schnell anwachsen kann, behilft man sich mit der Möglichkeit der Kapitel 6: impliziten Typumwandlung, Casting) . Diese basiert darauf, den Datentyp des zweiten Operanden (bei binären Operatoren) in den benötigten Datentyp zu transformieren, wann immer dies sinnvoll und möglich ist.