Шаблоны классов Шаблон класса даёт обобщённое определение схемы классов. ->(template)->(<)->|список прецедентов|->(>)->(class)->|имя класса|->({)->|тело класса|->(>)->(;) Каждый элемент списка является либо именем типа, за которым следует идентификатор, либо ключевым словом class, за которым следует идентификатор, обозначающий параметризированный класс. Пример: создать класс Vector для работы с одномерными массивами чисел; предусмотреть индексирование объектов и расширение массива. template class Vector{ T *data; int size; public: //функции - члены шаблонного класса автоматически становятся шаблонными функциями. Vector(int T[]); ~Vector(); void print() const; T& operator[](int); const T& operator[](int) const; void add(T); }; template Vector ::Vector(int n,T m[]){ date=new T[size *n] for (i=0;i Vector ::~Vector(){ delete []data; } Template T& Vector::operator[](int i){ if (i<0) return data[0]; if (i>=size) return data[size-1]; return data[i]; } template const T& Vector::operator[](int i) const{ .................. } template void Vector::print(){ ...................... } template void Vector::add(T a){ T* td=data; data=new T[size+1]; for (int i=0;i Va(7,a); Vector Vb(6,b); Vector Vc(3,c); int d[]={5,6,7,8}; Vector const Vd(4,d); Va.print(); cout<<"\nVa[3]="<