Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
}
Обратите внимание на использование шаблонного класса point главной функцией main():
в строках 1 и 2 шаблон инстанцируется в конкретный класс point с подстановкой вместо Т типа double, в строке 3 — в класс point с подстановкой типа int, в строке 4 — с подстановкой типа short.
Заметим, что наиболее широкое применение шаблоны классов нашли при создании контейнерных классов стандартной библиотеки шаблонов (STL), которые предназначены для работы с такими стандартными структурами, как вектор, список, очередь, множество и т. д. (Еще раз: контейнеры — это объекты, предназначенные для хранения других объектов).
Еще один пример.
// шаблон векторов
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; Прочитано: 164 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!