В предыдущей статье мы рассмотрели основы наследования и полиморфизма в языке C++. Теперь подробнее рассмотрим, как реализован механизм полиморфизма.
Повторим основные моменты. Если в классе есть хотя бы одна функция с ключевым словом virtual, то она считается виртуальной, а сам класс — полиморфным. Для каждого полиморфного класса создаётся специальная таблица — таблица виртуальных функций. А каждый объект любого из полиморфных классов дополняется указателем на одну из таких таблиц.
Рассмотрим простую иерархию: розетка и заземлённая розетка.
Socket
↑
GroundedSocket