Re[2]: О виртуальном наследовании
От: Amor Россия  
Дата: 09.09.02 13:14
Оценка:
Здравствуйте dupamid, Вы писали:

D>Здравствуйте Amor, Вы писали:


A>>Хотелось бы с Вашей помощью разобраться в деталях виртуального наследования.

A>>Вопрос такой: что на физическом уровне означает выражение

A>>class B : public virtual A {};


A>>Вот с виртуальными функциями все вроде ясно: к объекту добавляется еще 4 байта, которые содержат указатель на виртуальную таблицу класса, которая, в свою очередь, содержит адреса виртуальных функций.

A>>А от сюда уже ясно как реализуется полиморфизм.

A>>А здесь как?


A>>Спасибо.


D>Одна из возможных реализаций очень похожа на таблицы виртуальных функци. В классе B есть указатель на статическую структуру, в которой прописываются смещения для всех виртуальных базовых подобъектов. При обращении к виртуальной базе ее смещение относительно целого класса получается из это таблице по индексу базового класса.



Не понял!
1) "Виртуальные базовые подобъекты" — в моем случае это класс А?
2) Какой смысл этого смещения?
Вообщем хотелось бы пояснее, пожалуйста. В итоге я хочу понять как из всей этой лабуды какой нибудь далекий потомок понимает, что экземпляр класса А надо создать в единственном экземпляре (в случае множественного наследования)?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.