Шаблоны функций (ООАиП ООП Объектно ориентированное мышление и программирование)

Шаблоны функций
Шаблоны могут позволить воспользоваться одними и теми же функциями для различных типов данных. Благодаря шаблонам в языке С++ необязательно писать функции для применения в отношении данных различных типов. Шаблоны функций прописываются один раз, а уже сам компилятор генерирует при необходимости функции для различных типов данных. Фактически шаблоны – это средства языка программирования, которые позволяют автоматически генерировать программный код, экономя время программиста и делая программы более понятными и удобочитаемыми.
Чтобы создать шаблон функции необходимо написать
template
ВозвращаемыйТип ИмяСоздаваемогоШаблонаФункцииИОнЖеСамаФункция (аргументы)
{тело функции}
В приведенном примере в тексте программы можно использовать любой тип данных, который автоматически будет подставляться на место «НазваниеТипаИлиКлассаНаЭтоМестоБудетПодставлятьсяЛюбойТип». Его можно использовать сколько угодно внутри тела функции, в качестве получаемых или возвращаемых значений. Например в теле функции можем написать:
НазваниеТипаИлиКлассаНаЭтоМестоБудетПодставлятьсяЛюбойТип b;
В этом случае в теле функции будет создана переменная b с типом, с которым будет использована в этом месте функция.
Функция для которой создается шаблон может получать данные любого типа и возвращать их, главное что на месте «НазваниеТипаИлиКлассаНаЭтоМестоБудетПодставлятьсяЛюбойТип» окажется тип данных, с которым функция будет запущена. Для соответствующего типа данных функция будет сгенерирована компилятором на этапе компиляции.
Шаблонные функции вызываются с аргументами необходимого типа.
Таким образом шаблоны функций позволяют компилятору автоматически генерировать функции отличающиеся между собой только некоторым количеством переменных использующих один универсальный тип данных, помеченный придуманным нами ключевым словом в заголовке шаблона функции.
Домашнее задание: прочитать главу 14 до стр 647 и разобрать примеры

Автор: к.п.н. Румянцев Сергей Александрович

← Назад в раздел