Задать вопрос
Qubc
@Qubc
Ненавижу полисемию.

Как работает (примерно) отображение таблицы виртуальных функций в отладчике msvc?

Отладчик показывает содержимое массивов если знает размер массива и показывает только первый элемент массива если речь идёт об указателе на первый элемент массива.
Стало интересно, как он показывает таблицу виртуальных функций, если внутри объекта хранится указатель void ** ? Или это бессмысленный вопрос, потому что это зависит от реализации?

63ee4eb454441722861448.png

Попытался сделать как я себе это представляю, но получается не то.
#include <iostream>

class Base;

extern void (Base::* table [ 2 ])();

class Base {
public:
    void (Base::* (* ptable) [2]) ();
    
    Base () : ptable{&table} {    }

    void nvtest(){}

    virtual void vtest () {}
    virtual ~Base () {}
};

void (Base::* table [ 2 ])() = { &Base::nvtest , &Base::vtest };

int main () {
    int example [ 3 ] = { 1,2,3 };
    int* p = example;
    int ( *pe ) [ 3 ] = &example;

    Base b;
    return 0;
}
  • Вопрос задан
  • 90 просмотров
Подписаться 2 Средний 5 комментариев
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Хекслет
    Фронтенд-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы