Überladen des Eingabeoperators
-
Hallo Leute,
ich weiß, dass es irgendwie möglich ist, den Eingabeparameter zu überladen. Könnt ihr mir da vielleicht mal ein kleines Beispielprogramm zu schicken?
Danke
Betty
-
#include <iostream.h> class Geld { int euro; int cent; public: Geld(int e=0, int c=0):euro(e), cent(c) {} int getEuro() { return euro; } void setEuro(int x) { euro = x; } int getCent() { return cent; } void setCent(int x); void print() { cout << euro << "." << cent << endl; } friend Geld operator+(Geld a, Geld b); friend Geld operator-(Geld a, Geld b); friend ostream& operator<<(ostream& os, Geld& m); friend istream& operator>>(istream& is, Geld& m); }; /* Abfrage: * euro = euro / 100 * cent = euro % 100 */ Geld operator+(Geld a, Geld b) { Geld c; c.euro = a.euro + b.euro; c.cent = a.cent + b.cent; c.euro += c.cent / 100; c.cent = c.cent % 100; return c; } Geld operator-(Geld a, Geld b) { Geld c; c.euro = a.euro - b.euro; c.cent = a.cent - b.cent; return c; } void main() { Geld fritz(10,10); Geld hans(20,10); Geld wir; wir = hans - fritz; wir.print(); cin >> wir; // Mit überladendem Eingabestream cout << wir << endl; // Mit überladendem Ausgabestream } // Ausgabestream überladen ostream& operator<<(ostream& os, Geld& m) { os << m.euro << " Euro und " << m.cent << " Cent"; return os; } // Eingabestream überladen istream& operator>>(istream& is, Geld& m) { cout << "Euro: "; is >> m.euro; cout << "Cent: "; is >> m.cent; return is; }
-
Danke