Класс, включающий виртуальные функции, называется полиморфным. Рассмотрим правила использования виртуальных функций.
1) Виртуальная функция может быть только методом класса.
2) Любую перегружаемую операцию-метод класса можно сделать виртуальной, например, операцию присваивания или операцию преобразования типа.
3) Виртуальная функция, как и сама виртуальность, наследуется.
4) Виртуальная функция может быть константной.
5) Если в базовом классе определена виртуальная функция, то метод производного класса с такими же именем и прототипом (включая тип возвращаемого значения и константность метода) автоматически является виртуальным (слово virtual указывать необязательно) и замещает функцию-метод базового класса.
6) Конструкторы не могут быть виртуальными.
7) Статические методы не могут быть виртуальными.
8) Деструкторы могут (чаще – должны) быть виртуальными – это гарантирует корректный возврат памяти через указатель базового класса.
9) Виртуальная функция не может быть встроенной.