Использование виртуальных функций в C++ может нести накладные расходы как во времени выполнения, так и в объёме памяти. 14
Временные накладные расходы сравнительно невелики и обусловлены косвенным вызовом методов через указатель vptr. 5 По сравнению с обычным вызовом функции вызов виртуальной функции требует двух дополнительных выборок: одна для получения значения указателя vpointer, вторая для получения адреса метода. 3
Дополнительные расходы на память могут оказаться значительными и складываются из двух частей: 5
Накладные расходы при использовании виртуальных функций могут различаться в зависимости от случая наследования (одиночного и множественного) и порядка наследования. 1