![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
private:
T x, y;
};
template <class T> void point<T>::Show() {
cout << " (" << x << ", " <<у << ")" <<endl;
Обратите внимание на появление того же префикса template <class Т>, который предварял объявление шаблона класса, а также на более сложную запись операции квалификации области видимости для имени Show(): если раньше мы писали point::, то теперь пишем point<T>::, добавляя к имени класса список параметров шаблона, заключенный в угловые скобки (в данном случае один параметр Т)
Использование шаблона класса
При включении шаблона класса в программу никакие классы на самом деле не генерируются до тех пор, пока не будет создан экземпляр шаблонного класса, в котором вместо абстрактного типа Т указывается некоторый конкретный тип.
Такая подстановка приводит к актуализации, или инстанцированию, шаблона. Как и для обычного класса, экземпляр создается либо объявлением объекта, например:
point<int> anyPoint(13, -5);
либо объявлением указателя на актуализированный шаблонный тип с присваиванием ему адреса, возвращаемого операцией new, например:
point<double>* pOtherPoint = new point<double>(9.99. 3.33);
Встретив подобные объявления, компилятор генерирует код соответствующего класса.
Дата публикования: 2014-11-28; Прочитано: 233 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!