Skip to content

8_Lesson

Konychev Valera edited this page Mar 27, 2019 · 7 revisions

Шаблонные классы

  1. Определение шаблона класса. - simpleTemplate.h, simpleTemplateTest.cpp
  2. Нетипизированные аргументы - аргументы-выражения. Нельзя изменять подобные аргументы или получить их адресс. - nonTypeTemplate.h, nonTypeTemplateTest.cpp
    • Целочисленные типы.
    • Перечисления (enum).
    • Ссылки и указатели.
    • Нельзя использовать типы с плавающей запятой (float, double)! Исторические проблемы с плавучкой.
  3. Рекурсивное использование шаблонов. - recursiveTemplate.h, recursiveTemplateTest.cpp
  4. Использование нескольких параметров типа.
  5. Параметры типа по умолчанию в шаблонах. - stack.h, stackTest.cpp
    • template (можно использовать в шаблонах класса, нельзя в функциях (исторически)).
    • template (и там и там можно использовать).
  6. Специализация шаблона. - explicitStackTest.cpp
    • Неявное создание экземпляра vector arr;.
    • Явное создание экземпляра template class vector;.
    • Явная специализация шаблона класса. template <> class ClassName {}.
    • Частичная специализация template
  7. Шаблоные члены классов.
  8. Шаблоны, как параметры.
  9. Шаблонные классы и друзья.
    • Нешаблонные друзья.
    • Шаблонные друзья - связанные и несвязанные.
  10. Псевдоними для шаблонов.
  • typedef std::array<double, 42> dArray;
  • Создание семества псевдонимов C++11
template<int num>
    using dArray = std::array<double, num>
Clone this wiki locally