Если при написании программ на С++ часто приходиться создавать множество почти одинаковых функций для обработки данных разных типов, то используя ключевое слово template («шаблон»), можно задать компилятору образец, по которому он сам сгенерирует код, необходимый для конкретного типа. Компилятор создаст подходящую функцию, когда "узнает" какой тип аргументов класса Т подходит в конкретном случае. Т может быть и именем простого типа данных.
Пример.
# include <stdio.h>
# include <string.h>
template <class T> void swap(T &a, T &b)
{
T c; // создать переменную для временного хранения значения
c=b; b=a; a=c; // Перед обменом
} // i = 0 j = 1
void main() // x=0.000 y=1.000
{ int i = 0, j =1; // s1=first s2 = second
double x = 0.0, y = 1.0;
char *s1= "first", *s2 = "second"; // После обмена
printf("\t Перед обменом: \n " " i=%d j=%d\n " " x= %f y= %f \n "
" s1= %s s2= %s \n ", i, j, x, y, s1, s2); // i=1 j=0
swap( i, j ); // x=1.000 y=0.0000
swap( x, y ); // s1= second s2= first
swap( s1, s2 );
printf("\t После обмена: \n " " i=%d j=%d \n" "x=%f y=%f\n"
"s1=%s s2=%s\n", i, j, x, y, s1, s2);
}
Для примера «ОБМЕН» можно организовать обмен значениями через указатели:
# include <stdio.h>
void OBMEN(int *x, int*y)
{
int t;
t = *x;
*x = *y;
*y = t;
}