cpp2html 0.1-alpha © 2002 Andrea Leofreddi. To get the source click here

// 6.1: overloading (metodo)
#include <iostream>

using namespace std;

class Prova {
	private:
		int dato;

	public:
		// metodi per l'accesso a dato
		int get_dato() { return dato; };
		void set_dato(int ndato) { dato = ndato; };

		// overloading degli operatori
		const Prova &operator<<(int op) {
			cout << "Invocato operator<< metodo\n";
			dato += op;
		}

		const Prova operator+(int a) {
			Prova r(*this);

			cout << "Invocato operator+ metodo\n";
			r.dato += a;

			return r;
		}
		
		const Prova operator+=(int a) {
			Prova r(*this);

			cout << "Invocato operator+= metodo\n";
			
			r.dato += a;
			return r;
		}

		Prova()
		: dato(0) { };
};

int main() {
	Prova a, b;

	a << 3;

	b = a + 1;

	b = b + 1; // invoca il metodo Prova::operator+(int)
	b += 1; // invoca il metodo Prova::operator+=(int)
	//b = 1 + b; // ERRORE

	cout << "a.dato vale " << a.get_dato() << endl;
	cout << "b.dato vale " << b.get_dato() << endl;
}