Funkcje wirtualne, które deklarowane są w typie obiektu za pomocą słowa kluczowego virtual, wywoływane są (wiązanie, binding) w trakcie wykonywania programu – późne wiązanie (late binding, dynamic binding, runtime binding).
Kompilator dla każdej klasy tworzy pojedynczą tablicę VTABLE. Umieszczane są w niej adresy funkcji wirtualnych. Dodatkowym elementem klasy zawierającej funkcje wirtualne jest niejawny wskaźnik wirtualny VPTR, który wskazuje na tablicę VTABLE. Jeżeli odwołujemy się do funkcji wirtualnej, kompilator niejawnie odwołuje się do niej za pomocą wskaźnika VPTR z właściwym adresem na funkcję z tablicy VTABLE.
Wywołanie funkcji wirtualnych ze względu na większy nakład pamięciowy i dłuższy czas wykonania nie jest efektywne.
0 Komentarzy