Перейти к основному содержимому
Модуль 8 · Урок 1 из 217/18 в курсе~12 min
Уроки модуля (1/2)

Шаблоны функций

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

Определение шаблона функции

Чтобы определить шаблон функции, мы предваряем определение функции ключевым словом template, за которым следует список параметров типа, заключенный в угловые скобки <>. Обычно typename или class используются для объявления универсального типа.

C++
// T is the generic type parameter
template <typename T>
T add(T a, T b) {
    return a + b;
}

Вызов функции и вычисление аргументов шаблона

Когда мы вызываем функцию, мы можем явно указать тип в угловых скобках:

C++
int res1 = add<int>(5, 10);
double res2 = add<double>(3.14, 2.71);

Однако компилятор C++ обычно способен определить тип автоматически на основе переданных входных параметров (вывод аргументов шаблона):

C++
int res1 = add(5, 10); // The compiler deduces that T is int

Попробуйте сами

Упражнение#cpp.m8.l1.e1
Попыток: 0Загрузка…

Определите шаблон функции с именем myMax, который принимает два параметра универсального типа T и возвращает больший из двух.

Загрузка редактора…
Показать подсказку

Начните с написания `template <typename T>`, за которым следует подпись `T myMax(T a, T b)`.

Решение доступно после 3 попыток

Упражнение#cpp.m8.l1.e2
Попыток: 0Загрузка…

Напишите шаблон функции с именем printPair, который принимает два параметра разных универсальных типов T1 и T2 и печатает два аргумента, разделенные пробелом, с помощью std::cout.

Загрузка редактора…
Показать подсказку

В объявлении шаблона должны быть указаны два параметра: `шаблон &lt;имя типа T1, имя типа T2>`.

Решение доступно после 3 попыток