Spezielle Operatoren: Function call-Operator

Es soll an dieser Stelle auch nicht unerwähnt bleiben, daß prinzipiell die Möglichkeit besteht, auch den Funktionsaufrufs-Operator ( ) für eigene Klassen zu überladen. Es scheint jedoch in den meisten trivialen Fällen nicht sinnvoll zu sein, diesen Operator zu definieren, wie das folgende Beispiel zeigt:

  class X {
      ...
      public:
           void operator () ();     // Operator "()" ohne Parameter deklarieren
  };

Folgender Aufruf wäre dann möglich:

  void f()
  {
      X a;    // Objekt der Klasse X anlegen
   
      a();    // Hier wird NICHT die Funktion a() aufgerufen,
              // sondern der Operator () für das Objekt a !!!
  };

Diese Schreibweise kann sehr leicht zu Verwirrung führen, da man a() eigentlich als den Aufruf einer globalen Funktion interpretieren würde.
In manchen Klassenbibliotheken wird jedoch von dieser Möglichkeit des Überladens des Function call-Operators Gebrauch gemacht.
Bei Bedarf sei auf das Literaturverzeichnis verwiesen, wir wollen an dieser Setlle nicht weiter darauf eingehen.