Kurs maturalny z języka angielskiego!
kurs-maturalny-jezyk-angielski

PROGRAMOWANIE I ALGORYTMY

Zajęcia maturalne z informatyki
Olimpiada Informatyczna Juniorów
    Prowadzący: Marcin Kasprowicz
  • właściciel serwisu algorytm.edu.pl
  • wrzesień 2024 — start zajęć
  • czytaj więcej

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>
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
	
	return 0;
}
Out: 10