Programmieren in C++
Kapitel 9: Streamoperatoren überladen
Diese Kapitel widme ich der nicht ganz unwichtigen Technik des Überladens von
Stream-Operatoren. Ich will nur das Überladen von ostream. Alles andere (istream,
ifstream, ofstream) funktioniert analog!
Diese Technik ist insofern interessant, als das man die Daten einer Klasse
ja irgendwann auch wieder auf den Bilschirm bringen muss. Ausserdem haben wir
ja in Kapitel 8 gesehen, dass auch Dateien mit den Stream-Operatoren behandelt
werden und wir können dann diese Operatoren für eine Klasse so überladen, dass
gleich alle Klassendaten komplett in eine Datei speichern können oder wieder
herstellen können.
Zunächst ist anzumerken, dass diese Operatoren nicht Member einer Klasse sein können,
weil sie Rückgabetypen haben, die die Klasse nicht auflösen kann (Man nehme das bitte so hin).
Sie müssen also global deklariert sein. Deshalb muss der Operator innerhalb der Klasse als
FRIEND deklariert sein, damit der Operator auf die Klassendaten zugreifen kann (siehe Kapitel
2.7).
Die Funktionsdeklaration lautet wie folgt:
| ostream& operator<< (
ostream& out, const CClass& klasse ); |
Ich will ein möglichst einfaches Beispiel bringen für eine Klasse, die eine
Textvariable als Inhalt hat. Dieser Text soll mit cout << klasse;
ausgegeben werden können.
|