Перейти до основного вмісту
Модуль 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.

Завантаження редактора…
Показати підказку

Оголошення шаблону має вказувати два параметри: `template <typename T1, typename T2>`.

Рішення доступне після 3 спроб