Страницы

Поиск по вопросам

воскресенье, 2 июня 2019 г.

Что такое template, как и зачем?

Что такое template в C++? Для каких целей он используется? Как он используется? - Желательно бы пример использования.


Ответ

Шаблоны (template) в C++ являются отдельными синтаксическими конструкциями.
Шаблоны используются для обобщённого программирования. Вы пишете алгоритм, который работает с различными типами данных, требуя от них только некоторой небольшой функциональности, а компилятор при использовании этого шаблона с конкретным типом подставляет тип и фактически сам генерирует требуемый код на C++
Вот простейший пример использования шаблонов:
template T min(const T x, const T y) { return x < y ? x : y; }
Мы написали код, который работает с любым типом данных, требуя от этого типа только наличия операции "меньше" (operator<). (На самом деле ещё конструктора копирования, но это уже детали.) Теперь мы можем использовать наш шаблон:
int x, y; int z = min(x,y); // Автоматический вывод типа. double a, b; double c = min(a,b); // Автоматический вывод типа. double d = min(x,y); // Явное указание типа.
std::vector::iterator i, j, k; k = min(i,j);
Видно, что нам удалось использовать этот шаблон не только к обычным числовым типам, но и к сложным сущностям - итераторам.
В этом мощь обобщённого программирования - код, написанный один раз используется многократно. Но есть и недостаток - "разбухание" бинарного кода - для каждого типа параметра шаблона компилятор создаст свой бинарный код.

Комментариев нет:

Отправить комментарий