Programowanie i algorytmy

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