Программирование на C и C++

Онлайн справочник программиста на C и C++

Пример с двумя типами-шаблонами

Класс-шаблон может иметь несколько типов-шаблонов. Достаточно объявить все типы-шаблоны в виде списка, разделенного запятыми. Например, в следующем коротком примере создается класс, использующий два типа-шаблона:

/* данный пример использует два шаблона при определении класса
*/
#include <iostream.h>
template <class Type1, class Type2> class myclass
{
Type1 i;
Type2 j;
public:
myclass (Type1 a, Type2 b) { i = a; j = b; }
void show () { cout << i << ' ' << j << '\n'; }
};
int main()
{
myclass<int, double> ob1(10, 0.23);
myclass<char, char *> ob2('Х', "This is a test");
ob1.show(); // вывод int, double
ob2.show(); // вывод char, char *
return 0;
}

Эта программа выдаст следующий результат на экран:

10 0.23
X This is a test

В программе объявляются два типа объектов. Объект ob1 использует типы данных integer и double. Объект ob2 использует типы данных char и char*. В обоих случаях компилятор автоматически генерирует необходимые данные и функции в соответствии с типом данных, передаваемых конст­руктору в качестве аргументов.

Функции-шаблоны и классы-шаблоны обеспечивают беспрецедентные возможности для созда­ния многократно используемого кода. Если процедура имеет общий характер, то стоит рассмот­реть возможность ее реализации в виде шаблона. После того как этот шаблон будет отлажен и проверен, можно использовать его снова и снова в различных ситуациях, не внося никаких изме­нений. Однако не надо поддаваться искушению реализовывать все в виде функций-шаблонов и классов-шаблонов. Неуместное использование шаблонов может только запутать.