Ausgabe-Operationen: Der Ausgabe-Operator << (1/2)

In den Beispielen der vorigen Kapitel sind wir schon des öfteren auf Zeilen der Gestalt

  cout << "Hallo, ich bin ein Teststring \n";

gestoßen, mit denen der angegebene String auf dem Standard-Ausgabekanal ausgegeben wird. Während wir uns bisher über die Wirkungsweise des Operators << keine Gedanken gemacht haben, wollen wir dies nun nachholen.
Da es sich bei cout um ein Objekt der Klasse ostream handelt, bedeutet die obige Zeile, daß für das Objekt cout die Operation << mit einem String als zweitem Argument aufgerufen wird:

  ostream& operator<<(const char*);    // Operator '<<' für Strings

Dabei ist der Operator derart implementiert, daß jeweils der zweite Operand in den Stream ausgegeben wird. Eine weitere Eigenschaft ermöglicht eine zusammengesetzte bzw. verkettete Ausgabe: der erste Operand dieses Operators, also das Stream-Objekt, wird nach der Ausgabe zur weiteren Verwendung zurückgegeben.
Das Beispiel

  int i = 5;
  int j = 3;

  cout << i << " plus " << j << " ergibt " << i+j << endl;

bewirkt die Ausgabe von

  5 plus 3 ergibt 8