
Программирование
на языке Си++
1

Модуль 7.
ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Определение, специализация и использование шаблонов Перегрузка функций-шаблонов
2

Модуль 7. ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Назначение и использование шаблонов функций (начало)
Шаблоны функций (шаблоны семейства функций) — удобный параметрический механизм автоматического (без явного участия программиста) создания определений перегруженных функций
Параметрами шаблонов функций являются (могут являться) типы возвращаемых функциями значений и принимаемых ими на вход формальных параметров. Количество и взаимное расположение формальных параметров таких функций параметризации не подлежит
Определение шаблона семейства функций (здесь угловые скобки <> красного цвета— часть грамматики языка)
template <список параметров шаблона> <заголовок функции> { [<тело функции>] };
Параметры шаблона семейства функций могут использоваться в спецификации формальных параметров и типа возвращаемого значения внутри заголовка функции, а также в определениях локальных объектов
в теле параметризованной функции |
3 |
|

Модуль 7. ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Назначение и использование шаблонов функций (окончание)
Описание шаблона семейства функций (здесь угловые скобки <> красного цвета— часть грамматики языка)
template <список параметров шаблона> <заголовок функции>;
Параметры шаблонов функций языка Си++
демонстрируют следующие свойства:
параметры шаблонов функций имеют уникальные в пределах шаблона идентификаторы (имена);
список параметров не может быть пуст;
каждый параметр начинается словом class (или typename)
каждый параметр должен быть использован в спецификации формальных параметров функции, а не только как тип возвращаемого значения или локального объекта в составе параметризованной функции
отдельные параметры шаблона функций и возвращаемое значение могут быть не параметризованными по описанным правилам
4

Модуль 7. ШАБЛОНЫ ФУНКЦИЙ И КЛАССОВ
Назначение и использование шаблонов классов
Шаблоны семейства классов автоматизируют построение
классов и имеют следующий формат (здесь угловые скобки <> красного цвета — часть грамматики языка):
template <список параметров шаблона> <определение класса>;
Производимое программистом внутреннее определение компонентных функций шаблона классов ничем не отличается от определения традиционных методов классов. Внешнее же определение компонентных функций осуществляется в соответствии со следующим форматом:
template <список параметров шаблона>
<имя шаблона класса> <список формальных параметров шаблона>::<имя функции> (<список формальных параметров>);
Определение объекта класса по соответствующему шаблону
<имя шаблона класса> <список фактических параметров шаблона> <идентификатор> (<инициализирующее выражение>);
5

Список литературы
[КР92] Керниган Б., Ритчи Д. Язык программирования Си / Пер. с англ. — М.: Финансы и статистика, 1992. — 272 с.
[КР06] Керниган Б., Ритчи Д. Язык программирования C / Пер. с англ. — М.:
Вильямс, 2006. — 304 с.
[ЛЛ01] Липпман С., Лажойе Ж. Язык программирования C++. Вводный курс.
— СПб.: Невский диалект, 2001. — 1104 с.
[Под03] Подбельский В.В. Язык Си++: Учеб. пособие. — 5-е изд. — М.: Финансы и статистика, 2003. – 560 с., ил.
[Под04] Подбельский В.В., Фомин С.С. Программирование на языке Си. – 2-е доп. изд. – М.: Финансы и статистика, 2004. – 600 с.
[Стр08] Страуструп Б. Язык программирования С++. Специальное издание.
— СПб.: Невский диалект, 2008. — 1104 с.
6