Hier ist die Klasse O_Stream implementiert. Neben der Klasse O_Stream sind hier auch die Manipulatoren hex, dec, oct und bin für die Wahl der Basis bei der Zahlendarstellung, sowie endl für den Zeilenumbruch deklariert.
- Manipulatoren
- Um bei der Textformatierung mit Hilfe der Klasse O_Stream das Zahlensystem bequem wählen und Zeilenumbrüche einfügen zu können, sollen sogenannte Manipulatoren definiert werden. Der Ausdruck kout << "a = " << dec << a << " ist hexadezimal " << hex << a << endl; soll dann beispielsweise den Wert der Variablen a erst in dezimaler und dann in hexadezimaler Schreibweise formatieren und zum Schluss einen Zeilenumbruch anfügen.
Die gewünschten Eigenschaften können realisiert werden, wenn hex, dec, oct, bin und endl als Funktionen (d.h. nicht als Methoden der Klasse O_Stream) definiert werden, die als Parameter und Rückgabewert jeweils eine Referenz auf ein O_Stream Objekt erhalten bzw. liefern. Durch diese Signatur wird bei dem genannten Ausdruck der bereits erwähnte Operator O_Stream& O_Stream::operator<< ((*fkt*) (O_Stream&)) ausgewählt, der dann nur noch die als Parameter angegebene Funktion ausführen muss.
- Anmerkung
- Der Manipulatorbegriff wurde dem Buch "Bjarne Stroustrup: The C++ Programming Language" entnommen. Dort finden sich auch weitergehende Erläuterungen dazu.