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 |