Составители:
Рубрика:
Виртуальные классы. При множественном наследовании базовый класс не может
быть специфицирован более одного раза в описании порожденного:
class В {...};
class D : В, В {...}; //недопустимо
Однако подобного эффекта можно добиться косвенным описанием:
class Х: public В { ... };
class Y: public В {...};
class Z: public X, public Y { ...};
В данном случае каждый объект класса Z имеет два подобъекта класса В. Для раз-
решения этой проблемы в описании базовых классов может быть добавлено ключевое
слово virtual:
class X: virtual public В {...};
class Y: virtual public В {...};
class Z: public X, public Y {...};
В этом случае класс Z имеет только один подобъект виртуального класса В.
Множественное наследование применяется для того, чтобы обеспечить производ-
ный класс свойствами двух или более базовых. Чаще всего один из этих классов являет-
ся основным, а другие обеспечивают некоторые дополнительные свойства, поэтому они
называются классами подмешивания. По возможности классы подмешивания должны
быть виртуальными и создаваться с помощью конструкторов без параметров, что позво-
ляет избежать многих проблем, возникающих при ромбовидном наследовании (когда у
базовых классов есть общий предок).
§ 3.4. Шаблоны классов
Использование шаблонов классов позволяет отделить алгоритм от конкретных ти-
пов данных, с которыми класс работает, передавая тип в качестве параметра. В данном
случае создаются
параметризованные классы.
Параметризованный класс создает семейство родственных классов, которые можно
применять к любому типу данных, передаваемому в качестве параметра. Наиболее ши-
рокое применение шаблоны находят при создании
контейнерных классов. Контейнер-
ным называется класс, который предназначен для хранения каким-либо образом органи-
зованных данных и работы с ними. Стандартная библиотека C++ содержит множество
контейнерных классов для организации структур данных различного вида.
Преимущество использования шаблонов состоит в том, что как только алгоритм
работы с данными определен и отлажен, он может применяться к любым типам данных
без переписывания кода. Рассмотрим синтаксис описания шаблона:
template <описание_параметров_шаблона> определение_класса;
Параметры шаблона перечисляются через запятую. В качестве параметров могут
использоваться типы, шаблоны и переменные.
Типы
могут быть как стандартными, так и определенными пользователем. Для
их описания используется ключевое слово class. Внутри шаблона параметр типа мо-
жет применяться в любом месте, где допустимо использовать спецификацию типа,
например:
99
Виртуальные классы. При множественном наследовании базовый класс не может
быть специфицирован более одного раза в описании порожденного:
class В {...};
class D : В, В {...}; //недопустимо
Однако подобного эффекта можно добиться косвенным описанием:
class Х: public В { ... };
class Y: public В {...};
class Z: public X, public Y { ...};
В данном случае каждый объект класса Z имеет два подобъекта класса В. Для раз-
решения этой проблемы в описании базовых классов может быть добавлено ключевое
слово virtual:
class X: virtual public В {...};
class Y: virtual public В {...};
class Z: public X, public Y {...};
В этом случае класс Z имеет только один подобъект виртуального класса В.
Множественное наследование применяется для того, чтобы обеспечить производ-
ный класс свойствами двух или более базовых. Чаще всего один из этих классов являет-
ся основным, а другие обеспечивают некоторые дополнительные свойства, поэтому они
называются классами подмешивания. По возможности классы подмешивания должны
быть виртуальными и создаваться с помощью конструкторов без параметров, что позво-
ляет избежать многих проблем, возникающих при ромбовидном наследовании (когда у
базовых классов есть общий предок).
§ 3.4. Шаблоны классов
Использование шаблонов классов позволяет отделить алгоритм от конкретных ти-
пов данных, с которыми класс работает, передавая тип в качестве параметра. В данном
случае создаются параметризованные классы.
Параметризованный класс создает семейство родственных классов, которые можно
применять к любому типу данных, передаваемому в качестве параметра. Наиболее ши-
рокое применение шаблоны находят при создании контейнерных классов. Контейнер-
ным называется класс, который предназначен для хранения каким-либо образом органи-
зованных данных и работы с ними. Стандартная библиотека C++ содержит множество
контейнерных классов для организации структур данных различного вида.
Преимущество использования шаблонов состоит в том, что как только алгоритм
работы с данными определен и отлажен, он может применяться к любым типам данных
без переписывания кода. Рассмотрим синтаксис описания шаблона:
template <описание_параметров_шаблона> определение_класса;
Параметры шаблона перечисляются через запятую. В качестве параметров могут
использоваться типы, шаблоны и переменные.
Типы могут быть как стандартными, так и определенными пользователем. Для
их описания используется ключевое слово class. Внутри шаблона параметр типа мо-
жет применяться в любом месте, где допустимо использовать спецификацию типа,
например:
99
Страницы
- « первая
- ‹ предыдущая
- …
- 97
- 98
- 99
- 100
- 101
- …
- следующая ›
- последняя »
