Middle+
49
questionbank

Сколько таблиц виртуальных функций будет у двух классов, участвующих в наследовании?

Получайте ответы на вопросы в реальном времени с Sobes Copilot
Ответ от нейросети sobes.tech

Количество таблиц виртуальных функций (vtable) зависит от типа наследования и наличия виртуальных функций в каждом классе.

При простом наследовании:

  • Базовый класс без виртуальных функций: 0
  • Базовый класс с виртуальными функциями: 1
  • Наследник без своих виртуальных функций: 0 (при наследовании обычных функций) или 1 (при наследовании виртуальных функций базового класса)
  • Наследник со своими виртуальными функциями (даже если базовый класс не имел виртуальных функций): 1

При наличии виртуальных функций в базовом классе и их переопределении в наследнике, или добавлении новых виртуальных функций в наследник, каждый класс будет иметь свою vtable.

При множественном наследовании может быть больше одной vtable на объект, если наследуется от нескольких классов с виртуальными функциями.

Таким образом, у двух классов, участвующих в наследовании, может быть от 0 до 2 таблиц виртуальных функций на каждый объект, в типичном случае простого наследования с виртуальными функциями, обе класса будут иметь по одной vtable.