Manipulatoren: Was steckt hinter den Manipulatoren? (1/3)
Für die reine Anwendung der Standardmanipulatoren kann der folgende
Abschnitt zunächst einmal übersprungen werden. Dennoch ist er
von großer Bedeutung, weil hier ein weiteres Beispiel für die Mächtigkeit
der Möglichkeit zum Überladen von Funktionen gegeben wird.
Hinter den Manipulatoren stecken im Endeffekt nichts anderes als Funktionen,
die, sofern sie einem I/O-Operator als Parameter übergeben werden,
aufgerufen werden.
Beispiel:
Der Ausgabe-Operator der Klasse ostream ist
etwa wie folgt überladen:
class ostream : virtual public ios {
...
ostream& operator << (ostream&
(*func)(ostream&)) {
return (*func)(*this);
}
...
}
Wird also dem Operator <<
als zweiter Operand eine Funktion
übergeben, die als Parameter ein ostream
-Objekt erhält
und ein ostream
-Objekt zurückliefert, wird diese Funktion
mit dem ostream
-Objekt, für das der Operator <<
aufgerufen wurde, aufgerufen.