From MJanik
(Difference between revisions)
|
|
| (7 intermediate revisions not shown) |
| Line 1: |
Line 1: |
| | + | [https://www.if.pw.edu.pl/~majanik/data/JP/2025/Zadanie9_WektorN.pdf Zadanie 9 - WektorN] |
| | + | |
| | + | |
| | + | [https://www.if.pw.edu.pl/~majanik/data/JP/2025/Zadanie9_Macierz.pdf Zadanie 9 - Macierz] |
| | + | |
| | + | |
| | + | <hr /> |
| | + | |
| | 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 12: |
Line 20: |
| | | | |
| | Ułatwia to korzystanie z klasy i poprawia czytelność kodu. | | 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! |
| | | | |
| | | | |
Latest revision as of 08:30, 5 December 2025
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 [] !