Я знаю, что, как реализовать разрешение вызова виртуальных функций, не является частью stand-by C++, ни он ничего не говорит о vptr или v-table, но позвольте мне задать этот вопрос здесь.Когда v-таблица создана для класса?
Я слышал, что v-таблица является общей методикой, используемой компиляторами для реализации разрешения вызова виртуальных функций. Мое недопонимание в этом заключается в том, что для каждого класса требуется только виртуальная таблица.
Что мне интересно, когда v-таблица создана для класса?
Это когда класс заданного типа (который требует v-таблицы) создается в пространстве процессов в первый раз?
Все остальные впоследствии созданные объекты этого типа в этом пространстве процесса ссылаются на уже созданную v-таблицу?
Когда этот v-стол будет удален?
Прошу прощения, если это слишком субъективный или дискуссионный вопрос, но эти вопросы задерживаются у меня на некоторое время, и я чувствую, что его спрашивают здесь.
Если вы хотите узнать вас собираются рассказать нам, какой компилятор (и версия) на какой ОС, а затем надеюсь, что один из инженеров-компиляторов, который написал код, находится здесь и хочет ответить. Но даже если вы знаете, что информация бесполезна. –
Если вас интересуют детали реализации, вы должны поместить [Внутри объектной модели C++] (http://www.amazon.com/dp/0201834545/) в свой список пожеланий на Рождество. Он подробно описывает vtables и другие материалы. – fredoverflow
Хорошо, это может быть статическая таблица, не связанная со временем жизни объектов, имеет смысл. – riderchap