таблицы для производных, бетонов, классов - PullRequest
1 голос
/ 02 августа 2009

Если у меня есть один базовый класс, и я извлекаю из него 10 различных конкретных производных классов, будет ли каждый конкретный производный класс иметь различную vtable?

Ответы [ 2 ]

4 голосов
/ 02 августа 2009

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

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

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

0 голосов
/ 02 августа 2009

Зависит от того, переопределяют ли ваши производные классы какие-либо виртуальные методы или объявляют их.

...