Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры / ООП(Тимофеев) / ООП-Тимофеев.doc
Скачиваний:
41
Добавлен:
16.04.2013
Размер:
328.19 Кб
Скачать

Абстрактные базовые классы

Иерархия типов обычно имеет корневой класс, содержащий некоторое число виртуальных функций. Виртуальные функции обеспечивают динамическую типизацию. Виртуальные функции корневого класса часто являются фиктивными функциями. Они имеют пустое тело в корневом классе, но в производных классах им будет придан конкретный смысл. В С++ для этих целей введена чисто виртуальная функция (pure virtual function). Чисто виртуальная функция – это виртуальная функция, тело которой не определено. Она объявляется внутри класса следующим образом:

virtual прототип_функции = 0

Чисто виртуальная функция используется для того, чтобы отложить выбор реализации функции. В терминологии ООП это называется отложенным методом (deferred method).

Класс, имеющий хотя бы одну чисто виртуальную функцию, называется абстрактным классом (abstract class). Полезно, чтобы корневой тип в иерархии классов был абстрактным классом. Он должен иметь основные общие свойства со своими производными классами, но сам не может использоваться для объявления объектов. Вместо этого он используется для объявления указателей, которые могут иметь доступ к подобъектам, произведенным их абстрактного класса.

Виртуальные функции влекут небольшие дополнительные издержки на этапе выполнения по сравнению с обычными функциями-членами. Поэтому мы используем их в наших реализациях, только когда это необходимо.

36

Соседние файлы в папке ООП(Тимофеев)