C++

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

26 уроков 40 заданий Справочник Компилятор
Школа программирования / Видеокурсы / С++ программирование / Уроки 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++

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