Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!