Przeciążanie operatora =

Zad. 4. Napisz program, który przeciąży operator = w taki sposób, aby odwrócił kolejność przypisania, tzn. do zmiennej po lewej stronie przypisywał wartość zmiennej po prawej stronie. (Standardowo jest na odwrót).

Rozwiązanie

 

#include<iostream>
#include<cstdlib>

using namespace std;

class klasa{
	public:		//funkcja operatorowa przeciążająca operator =
		klasa(){x = 0;} //domyslna wartosć atrybutu x wynosi 0
		klasa(int a) //konstruktor pobierający wartosć dla atrybutu x
		{
			x = a;
		}
		int operator = (klasa & obiekt) //aby zapisały się zmiany
		{								//obiekt musi być jako referencja
			obiekt.przypisz(x);
		}
		void przypisz(int a)
		{
			x = a;
		}
		int zwroc() //metoda zwraca wartosc atrybutu x
		{
			return x;
		}
	private:
		int x;
};
int main()
{
	klasa A(10), B; //stworzenie obiektów A i B
	
	A = B; //zmiana kierunku przypisania, do B przypisujemy to co jest w A
	
	cout<<B.zwroc()<<endl; // out: 10
	
	system("pause");
	return 0;
}
 

 

out: 10