![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
};
1) Здесь префикс template <class Т> указывает, что объявлен шаблон класса, в котором Т — некоторый абстрактный тип.
2)То есть ключевое слово class в этом контексте задает вовсе не класс, а означает лишь то, что Т — это параметр шаблона. Вместо Т может использоваться любое имя.
3) После объявления Т используется внутри шаблона точно так же, как имена других типов. Отметим, что язык позволяет вместо ключевого слова class перед параметром шаблона использовать другое ключевое слово — typename, то есть написать:
template < typename Т> class point { /*... */ };
В литературе встречаются оба стиля объявления, но первый, пожалуй, более распространен.
4) Определение встроенных методов внутри шаблона класса практически не отличается от записи в обычном классе. Но если определение метода выносится за пределы шаблона класса, то синтаксис его заголовка усложняется.
Методы шаблона класса автоматически становятся шаблонами функций. Если метод описывается вне шаблона, его заголовок должен иметь следующие элементы:
template <описание_параметров_шаблона>
возвр_тип имя_класса <параметры_шаблона>::
имя_функции (список_параметров функции)
Покажем это на примере
метода Show():
/ / Версия с внешним определением метода ShowO
template <class Т> class point {
public:
point(T _x = 0, T _y = 0): x(_x), y(_y) {}
Дата публикования: 2014-11-28; Прочитано: 206 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!