Здесь элемент
В следующем примере создается обобщенная функция, которая меняет местами значения двух переменных, используемых при ее вызове. Поскольку общий процесс обмена значениями переменных не зависит от их типа, он является прекрасным кандидатом для создания обобщенной функции.
// Пример шаблонной функции.
#include
using namespace std;
// Определение шаблонной функции.
template
{
X temp;
temp = a;
a = b;
b = temp;
}
int main()
{
int i = 10, j=20;
double x=10.1, y=23.3;
char a='x', b='z';
cout << "Исходные значения i, j: " << i << ' '<< j << ' \ n ';
cout << "Исходные значения x, у: " << x << ' '<< у << '\n';
cout << "Исходные значения a, b: " << a << ' '<< b << ' \n';
swapargs(i, j); // перестановка целых чисел
swapargs(x, у); // перестановка значений с плавающей точкой
swapargs(a, b); // перестановка символов
cout << "После перестановки i, j: " << i << ' '<< j << ' \ n ';
cout << "После перестановки x, у: " << x << ' '<< у << '\n';
cout << "После перестановки a, b: " << a << ' '<< b << ' \n';
return 0;
}
Вот как выглядят результаты выполнения этой программы.
Исходные значения i, j: 10 20
Исходные значения х, у: 10.1 23.3
Исходные значения a, b: х z
После перестановки i, j: 20 10
После перестановки х, у: 23.3 10.1
После перестановки a, b: z х
Итак, рассмотрим внимательно код программы. Строка
template
сообщает компилятору, во-первых, что создается шаблон, и, во-вторых, что здесь начинается обобщенное определение. Обозначение
Здесь необходимо уточнить некоторые важные термины, связанные с шаблонами. Во-первых, обобщенная функция (т.е. функция, объявление которой предваряется
Поскольку C++ не распознает символ конца строки в качестве признака конца инструкции,
template
void swapargs(X &a, X &b)
{
X temp;
temp = a;
a = b;
b = temp;
}
При использовании этого формата важно понимать, что между
// Этот код не скомпилируется.
template