└── 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*
.
- Для чого потрібні оператори?
- Які оператори можна перевантажувати?
- Які оператори не можна перевантажувати?
- Що таке серіалізація та десеріалізація?
- Як можна перевантажити оператори?
- Чим відрізняється перевантаження операторів за допомогою функцій-членів класу та дружніх функцій?
- Що таке "дружні функції", у чому їх особливості, коли вони необхідні?