C++ Шаблонные функции
Иногда удобно создать 1 шаблон, по которому будут обрабатываться любые данные, например:
Нужно поменять местами 2 переменные, независимо от их типа (char, int, long…)
Для этого удобно создать шаблон функции:
template<typename T>
void Swap (T &a, T &b)
{
T Temp=a;
a=b;
b=Temp;
}
В данном случае мы написали, что “T” является некиим шаблонным параметром, и если мы напишем:
int Val1=10, Val2=20;
Swap(Val1, Val2);
То компилятор применит сборку по шаблону, описанному нами и создаст функцию
void Swap (int &a, int &b){…}
если же мы изменим данные и напишем:
float Val1=10.1, Val2=20.2;
Swap(Val1, Val2);
То компилятор применит сборку по шаблону, описанному нами и создаст функцию
void Swap (float &a, float &b){…}
Важно, типы данных у 2-х аргументов в данном случае должны совпадать, т.е.
если же мы изменим данные и напишем:
float Val1=10;
int Val2=20;
Swap(Val1, Val2);
То компилятор не сможет выполнить сборку по шаблону!!! void Swap (float &a, int &b){…}, так как типы операндов разные (float и int)
