<<
<<
-Operators sein; dies würde eine genauere Erläuterung
kaum rechtfertigen. Der Hauptvorteil der Verwendung des Ausgabeoperators
ist vielmehr darin zu sehen, daß dessen Einsatz nicht auf die C++-Standarddatentypen
beschränkt ist! Jeder Programmierer kann durch Überladen des Operators
<<
für die selbstdefinierten Klassen jederzeit die
Verwendung der obigen Schreibweise auf eigene Klassen ausweiten (zum Überladen
vgl. auch Kapitel 14, Operatoren
Hat man z.B. für eine matrix
-/vektor
-Klasse sowohl die
Multiplikation
wie auch den Ausgabeoperator überladen, so kann man einfach schreiben:
cout << " Die Loesung von A*b mit A = " <<
A << " und x = " << x << " lautet: " << endl;
void f(const matrix& A, const vektor& x) {
cout << A*x << endl;
// ...
}
Da <<
-Operator nicht automatisch für eigene Klassen vorhanden
ist, sollte der Programmierer dafür Sorge tragen, daß für
alle Klassen, die sich zur Ausgabe eignen bzw. für die bereits eine
Elementfunktion für die Ausgabe zur
Verfügung
steht, auch der Ausgabeoperator <<
überladen ist.
ACHTUNG: Der Ausgabeoperator <<
muß für
eigene Klassen global überladen werden, da der erste Operand ein Stream ist
(völlig Analoges gilt übrigens auch für den später behandelten
Eingabeoperator >>
).
(Der Operator müßte sonst ja bekanntlich innerhalb der Stream-Klasse überladen werden, mit einer Matrix als zweitem Argument. Letzteres ist jedoch nicht möglich, da die Stream-Klassen einer geschlossenen Klassenbibliothek angehören und nicht nachträglich vom Programmierer erweitert werden können.)