Ausgabe-Operationen: Überladen des Ausgabe-Operators <<

Die einfache Schreibweise kann nun aber nicht der einzige Vorteil des Einsatzes des <<-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:

  void f(const matrix& A, const vektor& x) {

      cout << " Die Loesung von A*b mit A = " << A << " und x = " << x << " lautet: " << endl;
      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.)