C++ kompilator tworzy ukryty członkiem klasy o nazwie wirtualnego -pointer lub w skrócie vptr, gdy istnieje jedna lub więcej funkcji wirtualnych. Ta vptr jest wskaźnikiem wskazującym tabelę wskaźników funkcji. Ta tabela jest również tworzona przez kompilator i nazywana wirtualną tabelą funkcji lub tabelą vtable. Każdy wiersz tabeli vtable jest wskaźnikiem funkcji wskazującym odpowiednią funkcję wirtualną.
Aby wykonać późniejsze wiązanie, kompilator tworzy tę tabelę vtable dla każdej klasy zawierającej funkcje wirtualne i dla klasy pochodnej. Kompilator umieszcza adresy funkcji wirtualnych dla tej konkretnej klasy w "vtable".
Gdy wywołanie funkcji wirtualnej odbywa się za pomocą wskaźnika bazowego, kompilator po cichu wstawia kod w celu pobrania VPTR i wyszukiwania adresu funkcji w VTABLE, wywołując w ten sposób odpowiednią funkcję i powodując późniejsze/dynamiczne wiązanie .
O ile mi wiadomo, nie ma czegoś takiego, chyba że Twój ankieter mówił o jednym wpisie w strukturze vtbl. –
Wirtualna tabela * wskaźnik? –
To było zaawansowane pytanie do wywiadu, aby sprawdzić, jak dobrze znasz szczegóły implementacji modelu obiektowego C++. –