Skip to content

Latest commit

 

History

History
50 lines (37 loc) · 2.56 KB

File metadata and controls

50 lines (37 loc) · 2.56 KB

Przeciążanie Operatorów w C++

Spis treści

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/

Cel modułu

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.

Szybki przegląd

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.


Literatura

  1. B. Stroustrup, The C++ Programming Language, 4th ed., Addison-Wesley, 2013 – rozdz. 18 „Operator Overloading".
  2. S. Meyers, Effective C++, 3rd ed., Addison-Wesley, 2005 – pozycje 23–27.
  3. N. Josuttis, The C++ Standard Library, 2nd ed., Addison-Wesley, 2012 – rozdz. 3.
  4. cppreference.com – Operator overloading
  5. ISO/IEC 14882:2020 (C++20) – §12 „Overloading".