Przeciążanie operatora unarnego

Zad. 3. Napisz program, który przeciąży unarny (jednoargumentowy) operator "-" w taki sposób, żeby dekrementował wartość atrybutu danego obiektu.

 

Rozwiązanie

 
#include<iostream>
#include<cstdlib>

using namespace std;

class klasa{
	public:		
		klasa(){x = 0;} //domyslna wartosć atrybutu x wynosi 0
		klasa(int a) //konstruktor pobierający wartosć dla atrybutu x
		{
			x = a;
		}
		int operator - () //operator unarny nie posiada drugiego argumentu
		{				 //dlatego nawias jest pusty		
			--x;
		}
		int zwroc() //metoda zwraca wartosc atrybutu x
		{
			return x;
		}
	private:
		int x;
};
int main()
{
	klasa A(10); //stworzenie obiektu A i nadanie wartosci 0 atrybutowi x
	
	-A;//dekrementacja x
	
	cout<<A.zwroc()<<endl; // out: 9
	
	system("pause");
	return 0;
}

 

Out: 9