Введение в программирование

Шаблоны классов


Шаблоны классов позволяют определить параметризированный тип.

Шаблоны классов аналогично шаблонам функций позволяют на этапе компиляции создавать определения классов.

Шаблон класса указывается ключевым словом template, за которым в угловых скобках указывается список типов для создания параметризированного класса. Имя шаблона класса указывается после ключевого слова class.

Для создания объекта на основе шаблона класса после имени шаблона в угловых скобках указывается конкретный тип:

имя_шаблона_класса <тип> имя_объекта.

Например:

template <class T1> // Описание шаблона класса class A { T1 x,y; public: A(); ~A(); T1 Fx(); void Fy(T1 a, T1 b); }; template <class T1> A< T1>::A() {} // Реализация методов шаблона класса template <class T1> A< T1>::~A() {} template <class T1>T1 A< T1>::Fx(){ return x*y;} template <class T1>void A< T1>::Fy(T1 a, T1 b) {x=a; y=b;}

int main(int argc, char* argv[]) { int i1=1; int i2=2; double x=1.5; double y=2.5; A <int> F1; // Создание объекта с использованием шаблона класса A <int> *pF1=&F1; // Указатель на объект параметризированного типа pF1->Fy(i1,i2); std::cout<<pF1->Fx()<<std::endl; A <double> F2; A <double> *pF2=&F2; pF2->Fy(x,y); std::cout<<pF2->Fx()<<std::endl; return 0; }

Пример 12.2. Создание объекта на основе шаблона класса



Содержание раздела