Что тип `*` означает для __vfptr?

Да, я знаю * это указатель Я не об этом. В одной из моих программ у меня была установлена ​​точка останова, и я заметил, что в autos была переменная __vfptr со значением 0x000007feed210a00,

Однако по типу, он просто сказал * и все. Все другие указатели в моей программе имели такие типы, как unsigned char* или же some::namespace::Frame*, или же int*, Это имеет смысл, поскольку указатель напрямую связан с конкретным классом или типом данных. Но я понятия не имею, что * может быть, действительно ли существуют простые типы указателей?

РЕДАКТИРОВАТЬ : Я использую Visual Studio 2010

11

Решение

__vfptr содержит Таблица виртуальных методов и он содержит информацию, которая позволяет динамическое связывание в наследованиях.

Информация в нем будет включать в себя такие вещи, как функциональные указатели Разрешить virtual functions и информация о классе и его родителях.

11

Другие решения

Ответ, очевидно, зависит от реализации и формально касается вашего отладчика, а не C ++. На практике, однако, некоторые варианты _vptr является более или менее стандартным (в обычном смысле, а не в смысле определения формальным стандартом) именем указателя на _vtable, который в свою очередь содержит все виды информации, необходимой для разрешения виртуальных функций и RTTI. Итак _vptr это указатель на таблицу указателей, смещений и многих других вещей. Отладчик, вероятно, просто избегает необходимости давать этой цели имя или описывать ее структуру.

5

По вопросам рекламы [email protected]