Skip to content

Latest commit

 

History

History
53 lines (45 loc) · 3.41 KB

cpp-operators.md

File metadata and controls

53 lines (45 loc) · 3.41 KB

Перевантаження операторів

Структура директорії для лабораторної роботи

└── lab-cpp-03
    ├── Doxyfile
    ├── Makefile
    ├── README.md
    ├── doc
    │   └── lab-cpp-03.md
    ├── test
    │   └── test.cpp
    └── src
        ├── entity.cpp
        ├── entity.h
        ├── list.cpp
        ├── list.h
        └── main.cpp

Загальне завдання.

Поширити попередню лабораторну роботу (потоковий i/o при роботі зі класами) таким чином:

  • у базовому класі (прикладної галузі) перевантажити:
    • оператор присвоювання;
    • оператор порівняння (на вибір 2 протележних оператора: == , != ; < , >= ; > , <= );
    • оператори введення / виведення;
  • у класі-списку перевантажити:
    • оператор індексування ( [ ] );
    • оператори введення / виведення з акцентом роботи, у тому числі і з файлами

Обов'язково забезпечити!!!

  • програма має мати документацію, що оформлена за допомогою утиліти doxygen;
  • робота повинна бути оформлена згідно "Вимогам до структурної побудови звіту";
  • продемонструвати відсутність витоків пам’яті за допомогою утиліти valgrind;
  • продемонструвати роботу розроблених методів за допомогою модульних тестів;
  • у звіті навести ступень покриття коду модульними тестами. 50% - є мінімально допустимим відсотком покриття коду тестами;
  • продемонструвати роботу розроблених методів за допомогою модульних тестів;
  • не використовувати конструкцію "using namespace std;", замість цього слід робити "using" кожного необхідного класу, наприклад: using std::string, using std::cout;
  • у проекті не повинні використовуватися бібліотеки введення / виведення мови C, а також не повинні використовуватися рядки типу char*.

Контрольні запитання

  1. Для чого потрібні оператори?
  2. Які оператори можна перевантажувати?
  3. Які оператори не можна перевантажувати?
  4. Що таке серіалізація та десеріалізація?
  5. Як можна перевантажити оператори?
  6. Чим відрізняється перевантаження операторів за допомогою функцій-членів класу та дружніх функцій?
  7. Що таке "дружні функції", у чому їх особливості, коли вони необхідні?