From MJanik
(Difference between revisions)
|
|
| Line 1: |
Line 1: |
| - |
| |
| | 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. | | 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. |
| | | | |
| Line 8: |
Line 7: |
| | Wektor2D a, b, c; | | Wektor2D a, b, c; |
| | c = a + b; | | c = a + b; |
| - |
| |
| | | | |
| | Zamiast wywoływać specjalne funkcje typu c = add(a, b);. | | Zamiast wywoływać specjalne funkcje typu c = add(a, b);. |
| | | | |
| | Ułatwia to korzystanie z klasy i poprawia czytelność kodu. | | Ułatwia to korzystanie z klasy i poprawia czytelność kodu. |
| | + | |
| | | | |
| | '''Przeciążanie operatorów - zadanie przygotowujące''' | | '''Przeciążanie operatorów - zadanie przygotowujące''' |
Revision as of 10:30, 26 November 2025
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.
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 [] !