- Виртуальный метод – это метод базового класса, который можно переопределить в классе-наследнике. Он имеет реализацию по умолчанию.
- Абстрактный (чисто виртуальный) метод – это метод, который обязательно нужно переопределить в классе-наследнике. Он не имеет реализации в базовом классе.
Характеристика | Виртуальный метод | Чисто виртуальный метод |
---|---|---|
Объявление | virtual void | virtual void |
Реализация в базовом классе | Есть (по умолчанию) | Нет (обязательная для потомков) |
Назначение | Предоставить поведение «по умолчанию», которое можно изменить | Задать обязательный интерфейс (контракт) |
Класс | Может быть как абстрактным, так и конкретным | Делает класс абстрактным |
Создание объектов | Можно создавать объекты базового класса | Нельзя создавать объекты абстрактного класса |