
Ostatni przykład stąd: https://pl.wikibooks.org/wiki/C%2B%2B/Dziedziczenie_wielokrotne Te kilka bajtów to skąd się bierze?
#naukaprogramowania #cpp
W przykładzie poniżej rozmiar Klasy to 1kB + kilka bajtów, bez dziedziczenia wirtualnego byłoby to ponad 2kB, oraz oczywiście wywołanie metody wyswietl (używając takiego zapisu) byłoby niemożliwe.
#naukaprogramowania #cpp
- Najlepsze
- Wszystkie komentarze






Jak chcesz samemu popróbować to tu masz info jak: http://stackoverflow.com/questions/2549618/is-there-any-g-option-to-dump-class-layout-and-vtables
Pozdrawiam :)
@rotflolmaomgeez: ustawia przed? w sensie że tworzy vip ("virtual inheritance pointer") przed vtable? z tego również wynika że to dwie różne rzeczy. nie mam g++, ale w debuggerze visual studio widzę że są tworzone dwa wskaźniki - __vfptr (vtable) i vip. jedno może istnieć bez drugiego,
Komentarz usunięty przez autora
@ly000: to bardzo proste, zamiast wskaźnika jest przechowywany offset względem początku obiektu. W ten sposób każda instancja otrzymuje "inny vip", ale relatywnie w pamięci offset jest taki sam względem instancji danego obiektu.