Einfhrung: Überladen von Operatoren (2/2)

Nun ist dieses Beispiel nicht gerade sonderlich gut dazu geeignet, einen wirklich überladenen Operator vorzustellen, da es z.B. über die implizite Typumwandlung (int -> double) durchaus ausreichend wäre, den Operator + mit zugehöriger Operatorfunktion nur einmal zu definieren, nämlich für den Typ double. Man stelle sich jedoch einmal vor, daß man Klassen für Brüche oder etwa komplexe Zahlen definiert hat, so daß man auch für diese Typen gerne einfach schreiben würde:

  complex c_1, c_2, c_3;
  bruch b_1, b_2, b_3;

  c_2 = c_1 + c_3;    // Plus-Operator für Klasse complex
  b_1 = b_2 + b_3;    // Plus-Operator für Klasse bruch

Der Operator bleibt also immer der gleiche, er hat nur für unterschiedliche Klassen unterschiedliche Bedeutungen. Daß z.B. der Plus-Operator + auch bei unseren neuen Klassen complex und bruch auch wirklich einer Addition zweier komplexer Zahlen bzw. zweier Brüche entspricht, ist dabei keineswegs von vornherein gewährleistet. Der Programmierer hat hier (was eigene Klassen angeht) freie Hand, er könnte also den Plus-Operator auch wie eine Subtraktion implementieren. Dies entspricht aber nicht dem Grundgedanken, der hinter dem Überladen steht!