Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Ответы на контрольные вопросы по лекции 9

.docx
Скачиваний:
5
Добавлен:
20.06.2023
Размер:
16.21 Кб
Скачать

Ответы на контрольные вопросы по лекции 9

Дисциплина: объектно-ориентированное программирование

Студент: Заболотников М.Е.

Группа: 9373

  1. Что из себя представляет шаблон функций? Для чего он используется?

Шаблон функции представляет из себя обобщённое описание функции, то есть определение функции в терминах обобщённого типа, вместо которого может быть поставлен определённый тип данных. Шаблон выглядит следующим образом:

template <class X>

X function(X a, X b, ...)

{

...

}

Шаблоны функций используется для автоматизации создания функций, которые могут обрабатывать разнотипные данные.

  1. Что является параметром шаблона? Сколько может быть параметров у шаблона и как соотносятся между собой перечисления этих параметров в заголовке шаблона и в списке формальных параметров функций-шаблонов?

Параметрами шаблона являются его формальные параметры, которые обозначаются служебным словом class с последующим за ним идентификатором (именем параметра). Параметров у шаблона может быть несколько и все они должны использоваться в спецификации функции.

  1. В чем схожесть и различие шаблонов функций и шаблонов классов?

Сходство в синтаксисе создания заголовка шаблона:

template <class F> // для функции

template <class C> // для класса

Кроме того, и шаблоны функций, и шаблоны классов задаются глобально. Единственное отличие состоит в том, что шаблон функции описывается подобным описанию обычной функции образом, а создание шаблона класса – подобным созданию обычного класса образом.

  1. Может ли шаблон компилироваться в программный модуль (объектный код) и почему? В каких файлах рекомендуется описывать реализацию методов параметризованных классов?

Нет, не может. Рекомендуется описывать реализацию методов параметризованных классов в .h-файлах.

  1. В какой момент из шаблона класса создается реальный класс? Возможно ли в одном приложении из одного шаблона создание нескольких классов?

Создание по шаблону реального компилируемого кода происходит только в момент подставки в шаблон реальных типов и значений параметров. Отсюда — компиляция происходит в каждом модуле программы, использующим шаблон, отдельно. То есть использование шаблонов порождает дублирование частей кода программы. Поэтому в одном приложении из одного шаблона возможно создание нескольких классов.