From MJanik
Zadanie 9 - WektorN
Zadanie 9 - Macierz
Przeciążanie operatorów w C++ to mechanizm, który pozwala zdefiniować działanie standardowych operatorów (np. +, ==, [], <<) dla własnych typów danych – najczęściej klas i struktur.
Po co to robimy?
Żeby obiekty naszych klas zachowywały się naturalnie i czytelnie, tak jak typy wbudowane.
Np. jeśli mamy klasę Wektor2D, to dzięki przeciążeniu operatora + możemy pisać:
Wektor2D a, b, c;
c = a + b;
Zamiast wywoływać specjalne funkcje typu
c = add(a, b);.
Ułatwia to korzystanie z klasy i poprawia czytelność kodu.
Więcej przykładów znajdziecie na wykładzie, w szczególności w pliku "Wykład 5" na MS Teams!
Przeciążanie operatorów - zadanie przygotowujące
a. Dla klasy cmplx (double re, double im) proszę przeładować operatory +, -, *, = (zgodnie ze zdrowym rozsądkiem) oraz << (ten ostatni wypisuje liczbę jako "re+i im" czyli np. dla "cmplx a(2,3)" komenda: "cout<<a"; wypisze na ekranie: "2+i3" )).
b. Stworzyć nową klasę cmplx, która zamiast dwóch oddzielnych pól re oraz im będzie posiadała jedną tablicę na dwie liczby:
double* number[2];
Ponownie, przeładować operatory +, -, *, = oraz << .
Przeciążyć też operator [] (nawiasy kwadratowe!) by zwracał [i] - i-ty element tablicy.
Czyli przy zrobieniu:
cmplx a;
cout<<a[0]<<", "<<a[1]<<endl;
był w stanie wypisać wartość re oraz im z tablicy.
Na zajęciach można się spodziewać:
- Przeładowywania operatorów, w szczególności: +, -, <<, = i [] !