Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Определение шаблона семейства классов



template<список параметров шаблона> определение класса

Имя класса в определении класса – это не имя отдельного класса, а параметризованное имя семейства классов

Рассмотрим на примере класса векторов. Данными этого класса являются массив координат, какой бы тип не имели элементы массива. Тип элемента задается как параметр шаблона. И для любого типа элементов определяются базовые операции.

Определение шаблона класса (как и функции) может быть только глобальным

// шаблон векторов

template<class T> // Т – параметр шаблона

class Vector // Vector - имя семейства классов

{T* data; // данные класса

int size; // размер пространства

public:

Vector(int); // конструктор

~Vector () { delete [ ]data; } // деструктор

// перегрузка операции “ [ ]”

T& operator [ ] (int i) { return data[i];}

friend ostream & operator << (ostream&, Vector <T>);

};

template<class T> // внешнее определение конструктора шаблона

Vector <T>:: Vector(int n)

{data = new T[n];

size =n;}

// определение перегрузки операции <<

ostream & operator << (ostream& out, Vector <T> X)

{ out<<endl;

for(int i=0;i<X.size; i++)

out<<X[i]<<" "; return out;}

Теперь можно объявлять объекты конкретных классов, порожденных из шаблона

Имя параметризованного класса(шаблона) < фактические параметры шаблона>





Дата публикования: 2014-11-28; Прочитано: 281 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...