Dynamic dispatch — это механизм времени выполнения, который решает, какую реализацию метода запустить на основе действительного типа объекта, а не объявленного типа переменной. Большинство языков на основе классов реализуют это с помощью таблицы виртуальных методов (vtable).
Модель vtable
Каждый класс имеет таблицу указателей на реализации своих методов. Каждый объект содержит скрытый указатель на vtable своего класса. Виртуальный вызов работает так:
