Re: Вопрос про VPTR и VTABLE
От: rg45 СССР  
Дата: 19.04.17 06:41
Оценка:
Здравствуйте, straw dog, Вы писали:

SD>Хочу разобраться в следующем вопросе.

SD>...
SD>Далее как я это себе представляю: при кастинге B к А, vtable берется от B, но "урезается" до размера vtable класса А, поэтому при компиляции индекса метода baz в vtable не "обнаруживается". Как это все работает на самом деле?

Прежде чем вникать, как это устроено, нужно понять, как этим правильно пользоваться. Виртуальные функции позволяют по-разному реализовать (определить) один и тот же метод в разных производных классах, при этом этот метод должен быть объявлен в их общем базовом классе. А как именно устроена виртуальная таблица — это уже детали реализации и в каждом компиляторе это сделано по-своему. В стандарте языка C++ даже нет терминов таких как "virtual table" или "vtable" — описан лишь синтаксис и производимый эффект.
--
Не можешь достичь желаемого — пожелай достигнутого.
Отредактировано 19.04.2017 6:43 rg45 . Предыдущая версия . Еще …
Отредактировано 19.04.2017 6:42 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.