Virtual

Adam Boduch

virtual - słowo kluczowe języka Delphi

Klauzulą virtual można opatrzeć metodę Klasy. Staje się wówczas metodą wirtualną. Taką metodę można wówczas przedefiniować w klasie - potomku. Metodę wirtualną deklaruje się stawiając za nagłówkiem metody, słowo kluczowe virtual:

type
  TMyClass = class
  public
    procedure Virtual_Method; virtual;
end;

W działaniu metody dynamiczne i wirtualne są praktycznie takie same. Jedyne co je różni, to sposób wykonywania. Otóż metody wirtualne cechuje większa szybkość wykonania kodu, natomiast metody dynamiczne umożliwiają lepszą optymalizację kodu.

Jak to wygląda od strony kompilatora? Otóż Delphi utrzymuje dla każdej klasy tzw. tablicę VMT (ang. Virtual Method Table). Tablica VMT przechowuje w pamięci adresy wszystkich metod wirtualnych, tak więc niejako przyczynia się do zwiększenia pamięci operacyjnej, jakiej wymaga nasza aplikacja. Można to ominąć, stosując metody dynamiczne, ale - jak mówiłem - wiąże się to z pogorszeniem szybkości wykonywania kodu.

Generalnie zaleca się używanie metod wirtualnych zamiast metod dynamicznych.

Zobacz też:

2 komentarzy

Do poniższego komentarza: Poprawiłem.

"... natomiast metody dynamiczne umożliwiają lepszą optymalizację kodu."

"... Można to ominąć, stosując metody dynamiczne, ale - jak mówiłem - wiąże się to z gorszą optymalizacją kodu."
to jak to w koncu jest?