Das folgende Code-Beispiel stammt aus dem Buch
Objektorientiertes Programmieren in C++
- Ein Tutorial für Ein- und Umsteiger
von Nicolai Josuttis, Addison-Wesley München, 2001
© Copyright Nicolai Josuttis 2001
#ifndef BRUCH_HPP
#define BRUCH_HPP
// Standard-Headerdateien einbinden
#include <iostream>
// **** BEGINN Namespace Bsp ********************************
namespace Bsp {
class Bruch {
private:
int zaehler;
int nenner;
public:
/* Default-Konstruktor, Konstruktor aus Zähler und
* Konstruktor aus Zähler und Nenner
*/
Bruch (int = 0, int = 1);
// Multiplikation
Bruch operator * (const Bruch&) const;
// multiplikative Zuweisung
const Bruch& operator *= (const Bruch&);
// Vergleich
bool operator < (const Bruch&) const;
// neu: Ausgabe mit Streams
void printOn (std::ostream&) const;
// neu: Eingabe mit Streams
void scanFrom (std::istream&);
};
/* Operator *
* - inline definiert
*/
inline Bruch Bruch::operator * (const Bruch& b) const
{
/* Zähler und Nenner einfach multiplizieren
* - das Kürzen sparen wir uns
*/
return Bruch (zaehler * b.zaehler, nenner * b.nenner);
}
/* neu: Standard-Ausgabeoperator
* - global überladen und inline definiert
*/
inline
std::ostream& operator << (std::ostream& strm, const Bruch& b)
{
b.printOn(strm); // Elementfunktion zur Ausgabe aufrufen
return strm; // Stream zur Verkettung zurückliefern
}
/* neu: Standard-Eingabeoperator
* - global überladen und inline definiert
*/
inline
std::istream& operator >> (std::istream& strm, Bruch& b)
{
b.scanFrom(strm); // Elementfunktion zur Eingabe aufrufen
return strm; // Stream zur Verkettung zurückliefern
}
} // **** ENDE Namespace Bsp ********************************
#endif // BRUCH_HPP