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

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

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

A>class B : public virtual A {};


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

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

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


A>Спасибо.


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