Функция - член класса может содержать спецификатор virtual. Такая функция называется виртуальной.
Механизм абстрактных классов служит для представления общих понятий, которые фактически используются лишь для порождения более конкретных понятий. Абстрактный класс можно также употреблять как определение интерфейса, в котором производные классы обеспечивают разнообразие реализаций.
Абстрактный класс – это класс, который может использоваться лишь в качестве базового класса для некоторого другого класса. Класс является абстрактным, если он содержит хотя бы одну чистую виртуальную функцию.
Виртуальная функция называется чистой, если в объявлении функции внутри объявления класса задан чистый спецификатор = 0
| class Shape
|
|
| { public:
|
|
| virtual void draw() = 0;
| // Чистая виртуальная функция
|
| ... };
|
|
Абстрактный класс нельзя употреблять в качестве типа объектов, типа параметров функций, типа возвращаемого функцией значения или как тип при явном приведении типа.
Чистые виртуальные функции наследуются и остаются чистыми виртуальными функциями, таким образом, производный класс, в котором чистая виртуальная функция не переопределена, остаётся абстрактным классом.