Ответы на контрольные вопросы по лекции 9
.docxОтветы на контрольные вопросы по лекции 9
Дисциплина: объектно-ориентированное программирование
Студент: Заболотников М.Е.
Группа: 9373
Что из себя представляет шаблон функций? Для чего он используется?
Шаблон функции представляет из себя обобщённое описание функции, то есть определение функции в терминах обобщённого типа, вместо которого может быть поставлен определённый тип данных. Шаблон выглядит следующим образом:
template <class X>
X function(X a, X b, ...)
{
...
}
Шаблоны функций используется для автоматизации создания функций, которые могут обрабатывать разнотипные данные.
Что является параметром шаблона? Сколько может быть параметров у шаблона и как соотносятся между собой перечисления этих параметров в заголовке шаблона и в списке формальных параметров функций-шаблонов?
Параметрами шаблона являются его формальные параметры, которые обозначаются служебным словом class с последующим за ним идентификатором (именем параметра). Параметров у шаблона может быть несколько и все они должны использоваться в спецификации функции.
В чем схожесть и различие шаблонов функций и шаблонов классов?
Сходство в синтаксисе создания заголовка шаблона:
template <class F> // для функции
template <class C> // для класса
Кроме того, и шаблоны функций, и шаблоны классов задаются глобально. Единственное отличие состоит в том, что шаблон функции описывается подобным описанию обычной функции образом, а создание шаблона класса – подобным созданию обычного класса образом.
Может ли шаблон компилироваться в программный модуль (объектный код) и почему? В каких файлах рекомендуется описывать реализацию методов параметризованных классов?
Нет, не может. Рекомендуется описывать реализацию методов параметризованных классов в .h-файлах.
В какой момент из шаблона класса создается реальный класс? Возможно ли в одном приложении из одного шаблона создание нескольких классов?
Создание по шаблону реального компилируемого кода происходит только в момент подставки в шаблон реальных типов и значений параметров. Отсюда — компиляция происходит в каждом модуле программы, использующим шаблон, отдельно. То есть использование шаблонов порождает дублирование частей кода программы. Поэтому в одном приложении из одного шаблона возможно создание нескольких классов.