| Rozdział | Temat | Pliki źródłowe |
|---|---|---|
| 01 – Wprowadzenie | Idea, motywacja, czym jest przeciążanie | src/main.cpp |
| 02 – Przegląd operatorów | Które operatory istnieją, które przeciążamy | src/main.cpp |
| 03 – Składnia i zasady | Jak pisać przeciążenia, metoda vs funkcja wolna | src/Complex.h |
| 04 – Przypadki szczególne | Jednoargumentowe, ++/--, porównania, I/O | src/main.cpp |
| 05 – Przykłady | Klasa Fraction – pełny zestaw operatorów |
src/Fraction.h |
| 06 – Vec3d | Większy przykład: wektor 3D | src/Vec3d.h |
| Zadania | 3 zadania z rozwiązaniami | solutions/ |
Po ukończeniu tego modułu student będzie potrafił:
- wyjaśnić, czym jest przeciążanie operatorów i dlaczego C++ na to pozwala,
- wskazać, które operatory można, a których nie wolno przeciążać i uzasadnić dlaczego,
- napisać przeciążenie operatora jako metodę klasy lub wolną funkcję (z
friend), - obsłużyć szczególne przypadki: operatory jednoargumentowe, prefix/postfix
++/--, operatory wejścia/wyjścia, - zaprojektować klasę z kompletnym, spójnym zestawem przeciążonych operatorów.
Wyrażenie: a + b
│
▼ kompilator tłumaczy na jedno z:
a.operator+(b) ← forma metody składowej
operator+(a, b) ← forma wolnej funkcji
Przeciążanie operatorów to nic innego jak definiowanie funkcji o specjalnej nazwie operatorX.
Nie zmieniamy zasad języka — korzystamy z istniejącego mechanizmu wywoływania funkcji.
- B. Stroustrup, The C++ Programming Language, 4th ed., Addison-Wesley, 2013 – rozdz. 18 „Operator Overloading".
- S. Meyers, Effective C++, 3rd ed., Addison-Wesley, 2005 – pozycje 23–27.
- N. Josuttis, The C++ Standard Library, 2nd ed., Addison-Wesley, 2012 – rozdz. 3.
- cppreference.com – Operator overloading
- ISO/IEC 14882:2020 (C++20) – §12 „Overloading".