Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Множественное наследование. Организация памяти?


Автор: jonie 3.6.2007, 11:46
Итак, вопрос собственно сформирован в subj-е.... надо вспомнить как организуется таблица виртуальных функций (ТВМ) в случае множественного наследования (как инициализируется, чем и кем, и как размещается в памяти, к чему привязывается (к каждому экземпляру класса (сколько экземпляров столько и таблиц)), или же для каждого "класса" (сколько классов, столько и таблиц), как компилятор осуществляет доступ к таким методам(по формуле delta+index (delta - смещение в таблице для класса, index - номер функции класса)?)., жалетально с картинками в памяти (иначе легко запутаться)...
В случае одинарного наследования вроде помнится... а вот случай множественного чего-то никак (...

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

Думаю тема будет интересна, не только мне.

Автор: Daevaorn 3.6.2007, 12:45
Это всё детали реализации конкретного компилятора. Поэтому нужно либо указаать интересующий, либо всё будет чистой теорией, не сопряженной с практикой. А google действительно что-то знает:
http://cpptips.hyperformix.com/MultipleInher.html
http://en.wikipedia.org/wiki/Virtual_table#Multiple_inheritance

Автор: jonie 3.6.2007, 12:55
этого "маловато" мягко скажемс....
Ок. Рассмотрим давайте VC от M$ (COM и иже с ними используют одну модель, я полгаю => все компиляторы для винды , поддерживающие COM взаимодействие должны(так или иначе,ибо совместимость бинарная) поддерживать одну модель, так какую?)
впрочем, я также пологаю что и теория будет очень даже полезна.... важно даже не то "где все это лежит", а "как это оргинизуется" как с т.з. логики заполнения, так и вызова....

Автор: jonie 6.6.2007, 23:31
ну че... профи нет ?(

Автор: JackYF 7.6.2007, 04:47
jonie, математикой пахнет. Доказательствами, теорией и т.д.
Лично я уже забил. Мне хватает представления о том, как оно организовано.

Если никто больше не вызовется рисовать/искать подробные схемы с примерами, значит, остальные думают примерно так же.

Автор: Daevaorn 7.6.2007, 10:15
Цитата(jonie @  3.6.2007,  13:55 Найти цитируемый пост)
Ок. Рассмотрим давайте VC от M$ (COM и иже с ними используют одну модель, я полгаю => все компиляторы для винды , поддерживающие COM взаимодействие должны(так или иначе,ибо совместимость бинарная) поддерживать одну модель, так какую?)

не понятно причем тут множестваенное наследование С++ и MS COM. Если интересует COM, то тогда явно не тот раздел выбрал для вопроса.

Автор: MAKCim 7.6.2007, 10:36
jonie, 
берешь любой компилятор, который можеть генерировать код на ассемблере и... изучаешь сей код  smile 
кстати получишь самую достоверную и конкретную информацию
дальше если учесть, что сам принцип скорее всего будет справедлив для всех компиляторов, получишь в какой-то мере общий результат

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)