14.15  Общие правила использования виртуальных функций

Класс, включающий виртуальные функции, называется полиморфным. Рассмотрим правила использования виртуальных функций.

1) Виртуальная функция может быть только методом класса.

2) Любую перегружаемую операцию-метод класса можно сделать виртуальной, например, операцию присваивания или операцию преобразования типа.

3) Виртуальная функция, как и сама виртуальность, наследуется.

4) Виртуальная функция может быть константной.

5) Если в базовом классе определена виртуальная функция, то метод производного класса с такими же именем и прототипом (включая тип возвращаемого значения и константность метода) автоматически является виртуальным (слово virtual указывать необязательно) и замещает функцию-метод базового класса.

6) Конструкторы не могут быть виртуальными.

7) Статические методы не могут быть виртуальными.

8) Деструкторы могут (чаще – должны) быть виртуальными – это гарантирует корректный возврат памяти через указатель базового класса.

9) Виртуальная функция не может быть встроенной.