vtable przy wielokrotnym dziedziczeniu
Ostatnio zmodyfikowano 2018-02-27 00:16
robaczek122 Temat założony przez niniejszego użytkownika |
vtable przy wielokrotnym dziedziczeniu » 2018-02-26 21:49:30 |
|
pekfos |
» 2018-02-27 00:16:29 dlaczego tam nie ma odwołania bezpośrednio do metody: Child::FatherFoo(), tylko wywołujemy ją poprzez tę "thunk" funkcję? |
void Father_FatherFoo( void * _this ); void Child_FatherFoo( void * _this ); Takie mniej więcej procedury będą istnieć w pamięci i implementować te metody. Weź teraz jakąś metodę f w Father, która woła FatherFoo. Według twojego pomysłu po prostu bierzemy adres funkcji i wywołujemy ją z this. f operuje na Father, ale może wywołać Child_FatherFoo, jeśli f zostało wywołane na Child. Child_FatherFoo operuje na Child, a więc wymaga potencjalnie innego adresu, bo adres podobiektu klasy bazowej nie musi być identyczny z adresem obiektu klasy pochodnej. |
|
« 1 » |