Отладчик показывает содержимое массивов если знает размер массива и показывает только первый элемент массива если речь идёт об указателе на первый элемент массива.
Стало интересно, как он показывает таблицу виртуальных функций, если внутри объекта хранится указатель void ** ? Или это бессмысленный вопрос, потому что это зависит от реализации?
Попытался сделать как я себе это представляю, но получается не то.
#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;
}