-
Notifications
You must be signed in to change notification settings - Fork 13
8 Home Work
Konychev Valera edited this page May 12, 2019
·
5 revisions
!Теоретическое задание выполняется письменно! (Присылать желательно либо в формате .txt, либо .pdf, первый вариант предпочтительнее)
- Что такое шаблон класса? Для чего нужны шаблоны?
- Какими могут быть аргументы шаблона класса? В чём их особенности, есть ли ограничения?
- Можно ли использовать шаблоны рекурсивно? Если можно, то продемонстрируйте, как компилятор раскроет рекурсивный шаблон. Если нельзя, то привидите пример, который компилятор не сможет обработать.
- Сколько аргументов может быть у шаблонов? Есть ли какие-нибудь ограничения?
- Можно ли задать значения параметров шаблона по умолчанию? Приведите примеры когда можно, когда нельзя.
- Расскажите, что знаете про специализацию шаблонов.
- Если есть шаблонный класс template<typename T> class myClass;, функция void show(myClass<int>& mc) и 2 объекта, myClass<int> iMc; myClass<double> dMc;. Можно ли оба этих объекта передать в функцию show? Если да, то почему. Если нет, то тоже почему.
- Если есть шаблонный класс template<typename T, int Num> class myClass;, функция void show(myClass<int, 100>& mc) и 2 объекта, myClass<int, 100> iMc100; myClass<int, 1000> iMc1000;. Можно ли оба этих объекта передать в функцию show? Если да, то почему. Если нет, то тоже почему.
!Для каждого контейнера:
- Обязательно реализуйте все необходие конструкторы.
- Обязательно перегрузите operator>>, operator<<, operator=.
- Создайте контейнер Array(Array.h) - статический массив.
- Создайте контейнер vArray(vArray.h) - динамический массив.
- Создайте контейнер List(List.h) - список.
- Для каждого контейнера должен быть свой файл вида testArray.cpp, в котором демонстрируется работа контейнера с содержимым различных типов, возможно другие объекты.
- Напишите Makefile для сборки вашей библиотеки и тестовой программы(параметры сборки -Wall -Wextra -Werror -std=c++14 -O3).
- команда make без параметров должна всё собрать.
- make clean - очистить созданные исполняемые и объектные файлы (артефакты)
- make exec_all - собрать и запустить все тестовые файлы.