Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка 8.docx
Скачиваний:
3
Добавлен:
25.11.2018
Размер:
30.55 Кб
Скачать

19. Перегруженные шаблоны

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

20. Образование шаблонов и специализация.

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

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

Неявное и явное образование шаблонов, а также явная специализация получили общее название — специализация. Общим для них является то, что они представляют определение функции, в основу которого положены конкретные типы, а не определение функции, являющееся обобщенным описанием. Введение явного образования шаблонов привело к появлению нового синтаксиса использования в объявлениях префиксов template и template <>, что дает возможность провести различие между явным образованием шаблонов и явной

специализацией.

21. Раздельная компиляция.

Язык C++ позволяет и даже поощряет размещение составляющих функций программы в отдельных файлах. Вы можете компилировать файлы по отдельности, а затем связывать их в окончательную выполняемую программу. Если вы вносите изменения всего лишь в один файл, можете повторно компилировать только один этот файл и затем компоновать его с ранее откомпилированными версиями других файлов. Если вы модифицируете

объявление структуры, то можете сделать это только один раз, а именно

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

Заголовочный файл, который содержит объявления структур и прототипов функций, использующих эти структуры

Файл исходного программного кода, который содержит программный код функций, работающих со структурами.

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

В интегрированной среде разработки программ не следует включать заголовочные файлы в список проекта, а так же использовать директиву #include для включения в программу файлов исходного программного кода в другие файлы исходного программного кода.