6 (Семинары и упражнения), страница 2
Описание файла
Файл "6" внутри архива находится в папке "Семинары и упражнения". PDF-файл из архива "Семинары и упражнения", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 2 страницы из PDF
Это называется специализацией. Специализация перекрывает общий шаблон.Например, если для типа char нам нужен класс, отличный от генерируемого по общемушаблону, мы могли бы определить следующую специализацию (предваряется ключевымсловом template с пустыми фигурными скобками):template <>class C<char>{char var;public:C (char arg) : var(arg) {};char read() const {return var;}};56.1. Аргументы шаблона, не являющиеся типом.Модифицируем шаблон так, чтобы класс С<…> мог иметь элемент данных в виде массива сразмерностью, передаваемой объекту в виде параметра:template <typename T, int n>class C{T var;T arr[n];public:C (T arg) : var(arg+1) {};T read() const {return var;}};Объявление в программе объектаC<double, 10> ob(7.5);заставит компилятор определить класс C<double, 10>, передав ему double вместо T и 10вместо n.6.2.
Несколько параметров-типов и значения по умолчанию.Рассмотрим следующий шаблон класса:template <typename T1, typename T2 = int>class D{T1 var1;T2 var2;…};Объявление в программе объектаD<double, char> ob;заставит компилятор создать класс D<double, char> с использованием double вместо T1 иchar вместо T2.ОбъявлениеD<double> ob;приведет к подстановке вместо T2 его значения по умолчанию, т.е int.Шаблонные классы могут служить в качестве базовых при наследовании и включаться вдругие классы в качестве элементов данных.ЛитератураСтивен Прата. "Язык программирования Си++.
Лекции и упражнения. Учебник: Пер. С англ." - ОООДиаСофтЮП, 2004. Главы 13-14.6.