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

Урок #24 - Шаблоны функций (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 месяца

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

Уроки Qt Creator | Графический интерфейс на С++
13 уроков
Создание игры на C++ / Создание "Змейки"
3 урока
Изучение C++ от новичка до профи
Комментарии для сайта Cackle