Шаблоны в языке C++ - способ обобщить какой-либо алгоритм, не привязываясь к определенному типу данных. Как один из вариантов использования, можно предложить создать параметризированную функцию, которая меняется в зависимости от заданного параметра.
Например, нам нужна функция, складывающая 2 числа. Числа могут быть как типа int так и double.
Шаблон для данной функции будет выглядеть так
1 2 3 4 5 6 |
template < typename R > void pls ( R & a, R & b, R & c ) { R d = a + b; c = d; } |
Первая строка template < typename R > указывает , что меняться будет тип, и в шаблоне этот тип будет обозначаться именем R. Далее идет описание функции сложения двух чисел, где их тип указывается как R. Это значит, что вызвав этот шаблон строкой
1 |
pls<int>(5,6,c); |
мы автоматически заменим тип R внутри шаблона на введенный нами int. Шаблоны работают не только с функциями, но и классами. Шаблон класса
1 2 3 4 5 |
template < int leng, typename a, typename b > class Ask{ a find(a x,a y); a cat; b arr[ leng ]; }; |
позволяет задать класс с определенными типами функции и двух переменных, а так же с заданным размером массива.
Вызов шаблона позволяет сократить написание кода, но длина исполняемого кода остается прежней. Компилятор просто создает определенные классы и функции в коде согласно введенным параметрам.