РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
701 of 815 menu

Ключевое слово template

Ключевое слово template позволяет создавать шаблоны функций и классов, которые могут работать с различными типами данных без дублирования кода. В угловых скобках указывается список параметров шаблона: обычно это типы, объявленные через ключевое слово typename или class, а также могут быть нетиповые параметры, например, целочисленные значения. Компилятор автоматически подставляет конкретный тип при вызове шаблонной функции или создании объекта шаблонного класса.

Синтаксис

template <typename T> T functionName(T param) { // тело функции } template <typename T> class ClassName { // тело класса };

Пример

Давайте создадим шаблонную функцию getMax, которая возвращает наибольшее из двух значений:

#include <iostream> using namespace std; template <typename T> T getMax(T a, T b) { if (a > b) { return a; } return b; } int main() { cout << getMax(3, 7) << endl; cout << getMax(2.5, 1.5) << endl; return 0; }

Результат выполнения кода:

7 2.5

Пример

Давайте создадим шаблонный класс Box, который хранит значение любого типа:

#include <iostream> #include <string> using namespace std; template <typename T> class Box { private: T value; public: Box(T v) : value(v) {} T getValue() { return value; } }; int main() { Box<int> intBox(42); Box<string> strBox("abcde"); cout << intBox.getValue() << endl; cout << strBox.getValue() << endl; return 0; }

Результат выполнения кода:

42 "abcde"

Пример

Давайте создадим шаблонную функцию с двумя параметрами разных типов, которая выводит их на экран:

#include <iostream> #include <string> using namespace std; template <typename T1, typename T2> void printPair(T1 a, T2 b) { cout << a << " " << b << endl; } int main() { printPair(1, "abcde"); printPair("12345", 2); return 0; }

Результат выполнения кода:

"1 abcde" 12345 2

Смотрите также

  • ключевое слово typename,
    которое объявляет параметр-тип в шаблоне
  • шаблонный класс template class,
    который обобщает классы для разных типов
  • специализация specialization,
    которая задает особое поведение шаблона для типа
  • вариативный шаблон variadic,
    который принимает переменное число параметров
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить