Объектно-ориентированное программирование на языке С++. Ноткин А.М. - 59 стр.

UptoLike

Составители: 

60
Шаблон класса.
Шаблон класса (иначе параметризованный класс) используется для
построения родового класса. Создавая родовой класс, вы создаете целое
семейство родственных классов, которые можно применять к любому типу
данных. Таким образом, тип данных, которым оперирует класс, указывает-
ся в качестве параметра при создании объекта, принадлежащего к этому
классу. Подобно тому, как
класс определяет правила построения и формат
отдельных объектов, шаблон класса определяет способ построения от-
дельных классов. В определении класса, входящего в шаблон, имя класса
является не именем отдельного класса, а параметризованным именем се-
мейства классов.
Общая форма объявления параметризованного класса:
template <class тип_данных> class имя_класса { . . . };
Основные свойства шаблонов классов.
Компонентные
функции параметризованного класса автоматически
являются параметризованными. Их не обязательно объявлять как парамет-
ризованные с помощью template.
Дружественные функции, которые описываются в параметризован-
ном классе, не являются автоматически параметризованными функциями,
т.е. по умолчанию такие функции являются дружественными для всех
классов, которые организуются по данному шаблону.
Если friend-функция содержит
в своем описании параметр типа па-
раметризованного класса, то для каждого созданного по данному шаблону
класса имеется собственная friend-функция.
В рамках параметризованного класса нельзя определить friend-
шаблоны (дружественные параметризованные классы).
С одной стороны, шаблоны могут быть производными (наследо-
ваться) как от шаблонов, так и от обычных классов, с другой
стороны, они
могут использоваться в качестве базовых для других шаблонов или клас-
сов.
Шаблоны функций, которые являются членами классов, нельзя
описывать как virtual.
Локальные классы не могут содержать шаблоны в качестве своих
элементов.
Компонентные функции параметризованных классов.
Реализация компонентной функции шаблона класса, которая нахо-
дится вне определения шаблона класса,
должна включать дополнительно
следующие два элемента:
                                   60

      Шаблон класса.
      Шаблон класса (иначе параметризованный класс) используется для
построения родового класса. Создавая родовой класс, вы создаете целое
семейство родственных классов, которые можно применять к любому типу
данных. Таким образом, тип данных, которым оперирует класс, указывает-
ся в качестве параметра при создании объекта, принадлежащего к этому
классу. Подобно тому, как класс определяет правила построения и формат
отдельных объектов, шаблон класса определяет способ построения от-
дельных классов. В определении класса, входящего в шаблон, имя класса
является не именем отдельного класса, а параметризованным именем се-
мейства классов.
      Общая форма объявления параметризованного класса:
      template  class имя_класса { . . . };

      Основные свойства шаблонов классов.
      •Компонентные функции параметризованного класса автоматически
являются параметризованными. Их не обязательно объявлять как парамет-
ризованные с помощью template.
      •Дружественные функции, которые описываются в параметризован-
ном классе, не являются автоматически параметризованными функциями,
т.е. по умолчанию такие функции являются дружественными для всех
классов, которые организуются по данному шаблону.
      •Если friend-функция содержит в своем описании параметр типа па-
раметризованного класса, то для каждого созданного по данному шаблону
класса имеется собственная friend-функция.
      •В рамках параметризованного класса нельзя определить friend-
шаблоны (дружественные параметризованные классы).
      •С одной стороны, шаблоны могут быть производными (наследо-
ваться) как от шаблонов, так и от обычных классов, с другой стороны, они
могут использоваться в качестве базовых для других шаблонов или клас-
сов.
      •Шаблоны функций, которые являются членами классов, нельзя
описывать как virtual.
      •Локальные классы не могут содержать шаблоны в качестве своих
элементов.

     Компонентные функции параметризованных классов.
     Реализация компонентной функции шаблона класса, которая нахо-
дится вне определения шаблона класса, должна включать дополнительно
следующие два элемента: