Здравствуйте Amor, Вы писали:
A>Хотелось бы с Вашей помощью разобраться в деталях виртуального наследования. A>Вопрос такой: что на физическом уровне означает выражение
A>class B : public virtual A {};
A>Вот с виртуальными функциями все вроде ясно: к объекту добавляется еще 4 байта, которые содержат указатель на виртуальную таблицу класса, которая, в свою очередь, содержит адреса виртуальных функций. A>А от сюда уже ясно как реализуется полиморфизм.
A>А здесь как?
A>Спасибо.
Одна из возможных реализаций очень похожа на таблицы виртуальных функци. В классе B есть указатель на статическую структуру, в которой прописываются смещения для всех виртуальных базовых подобъектов. При обращении к виртуальной базе ее смещение относительно целого класса получается из это таблице по индексу базового класса.