December 17, 2025, Wednesday, 350

Języki Programowania 9

From MJanik

Revision as of 10:31, 26 November 2025 by Majanik (Talk | contribs)
Jump to: navigation, search

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 [] !