Ü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


Log in to reply