Примечание: виртуальная таблица и виртуальный указатель являются деталями реализации, хотя все известные мне компиляторы C ++ используют их не в соответствии со стандартом, а только в результатах.
Чтобы ответить на ваш конкретный вопрос: для каждого экземпляра класса с виртуальными методами (либо его собственными, либо унаследованными), либо класса с (где-то) виртуальным наследованием требуется хотя бы один виртуальный указатель.
Их может быть несколько (если речь идет о виртуальном наследовании или множественном наследовании).
В вашем примере достаточно одного виртуального указателя.Однако не имеет смысла говорить об этом как о части class
.Виртуальный указатель является частью экземпляра (объекта) и живет вне правил классов, поскольку они применяются к языку, а виртуальный указатель является механизмом реализации.