Skip to content

8 Home Work

Konychev Valera edited this page May 12, 2019 · 5 revisions

Теория:

!Теоретическое задание выполняется письменно! (Присылать желательно либо в формате .txt, либо .pdf, первый вариант предпочтительнее)

  1. Что такое шаблон класса? Для чего нужны шаблоны?
  2. Какими могут быть аргументы шаблона класса? В чём их особенности, есть ли ограничения?
  3. Можно ли использовать шаблоны рекурсивно? Если можно, то продемонстрируйте, как компилятор раскроет рекурсивный шаблон. Если нельзя, то привидите пример, который компилятор не сможет обработать.
  4. Сколько аргументов может быть у шаблонов? Есть ли какие-нибудь ограничения?
  5. Можно ли задать значения параметров шаблона по умолчанию? Приведите примеры когда можно, когда нельзя.
  6. Расскажите, что знаете про специализацию шаблонов.
  7. Если есть шаблонный класс template<typename T> class myClass;, функция void show(myClass<int>& mc) и 2 объекта, myClass<int> iMc; myClass<double> dMc;. Можно ли оба этих объекта передать в функцию show? Если да, то почему. Если нет, то тоже почему.
  8. Если есть шаблонный класс 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=.
  1. Создайте контейнер Array(Array.h) - статический массив.
  2. Создайте контейнер vArray(vArray.h) - динамический массив.
  3. Создайте контейнер List(List.h) - список.
  • Для каждого контейнера должен быть свой файл вида testArray.cpp, в котором демонстрируется работа контейнера с содержимым различных типов, возможно другие объекты.
  • Напишите Makefile для сборки вашей библиотеки и тестовой программы(параметры сборки -Wall -Wextra -Werror -std=c++14 -O3).
    • команда make без параметров должна всё собрать.
    • make clean - очистить созданные исполняемые и объектные файлы (артефакты)
    • make exec_all - собрать и запустить все тестовые файлы.
Clone this wiki locally