пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

I семестр:
» Оп

Абстрактные классы и интерфейсы. Чисто виртуальные функции. Виртуальный деструктор.

Класс называется абстрактным, если в нем есть хотя бы один чисто виртуальный метод. Ну а интерфейс в принципе не может иметь реализацию. Таким образом, интерфейс средствами языка реализуется как абстрактный класс, все методы которого чисто виртуальные. Каждый интерфейс является абстрактным классом, не каждый абстрактный класс – интерфейс. Интерфейс содержит только public секцию, абстрактный класс не имеет ограничений. Интерфейс содержит только чисто виртуальные методы, абстрактный класс может содержать и поля, и обычные методы в добавок. Интерфейс реализуют, абстрактный класс наследуют.

Чисто виртуальная функция является функцией, которая объявляется в базовом классе, но не имеет в нем определения. Поскольку она не имеет определения, то есть тела в этом базовом классе, то всякий производный класс обязан иметь свою собственную версию определения. Объявление:
virtual тип имя_функции(список параметров) = 0;

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


19.01.2017; 21:55
хиты: 370
рейтинг:0
Точные науки
информатика
Языки программирования
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2024. All Rights Reserved. помощь