C++

С++ программирование / Уроки C++

26 уроков Практика Справочник Компилятор
/ Видеокурсы / С++ программирование / Уроки C++ / Урок #24 - Шаблоны функций (template)

Урок #24 - Шаблоны функций (template)

Урок #24 - Шаблоны функций (template)


C++

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

Видео урок:

Шаблоны в C++ это мощное свойство, которое позволяет создавать шаблон функции и передавать в нее параметры различных типов данных. Для создания такой функции необходимо использовать ключевое слово template, а также в угловых скобках указать один или несколько параметров, которые будут переданы в функцию.
template <typename Type1> // Указываем что это шаблон функции
// Принимаем параметр value и его тип данных мы получим
// также в качестве передаваемого параметра - Type1
void funct (Type1 *value) {
    cout << value; // Просто выводим это значение
}
Также мы спокойно можем передать не одно, а несколько значений с типами данных, которые изначально будут неизвестны в функции:
// Здесь мы получаем сразу два типа данных
template <typename Type1, typename Type2>
void funct (Type1 *value, Type2 *newValue) {
    // Мы можем использовать передаваемые типы в самой функции
    Type1 someNew;
    cout << newValue; // Просто выводим значение
}
Чтобы вызвать такую функцию мы должны дополнительно передать параметры типов данных:
// Вызов функции с одним параметром
funct<double>(value);
// Вызов с несколькими параметрами
funct<char, double>(value, oneMoreValue);

Исходный код

Шаблоны функций
#include <iostream>

using namespace std;

template <typename T1, typename T2>
T2 printArr (const T1 * array, int i) {
    int count = 0;
    for (int j = 0; j < i; j++) {
        cout << array[j] << " ";
        count++;
    }
    cout << endl;
    return count;
}

int main(int argc, const char * argv[]) {
    
    const int iSize = 3, fSize = 2, dSize = 3, cSize = 5;
    
    int i_arr[iSize] = {23, 45, 78};
    float f_arr[fSize] = {12.2, 67.5};
    double d_arr[dSize] = {3.345, 7.567, 9.023};
    char c_arr[cSize] = {"HI!!"};
    
    cout << "Массив с типом данных int: ";
    cout << "Количество элементов: " << printArr<int, int>(i_arr, iSize) << endl;
    cout << "Массив с типом данных float: ";
    cout << "Количество элементов: " << printArr<float, int>(f_arr, fSize) << endl;
    cout << "Массив с типом данных double: ";
    cout << "Количество элементов: " << printArr<double, int>(d_arr, dSize) << endl;
    cout << "Массив с типом данных char: ";
    cout << "Количество элементов: " << printArr<char, int>(c_arr, cSize) << endl;
    
    cin.get();
    return 0;
}

Онлайн редактор кода

Загрузка...

Домашнее задание

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям!

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы получить большое задание. Такие задания есть к каждому курсу. В них входит задание, методика решения, а также "Готовое решение".
PS: подобные задания доступны только при подписке от 1 месяца!

C++

Также стоит посмотреть