A virtuális módszertábla (VMT), a virtuális funkciótáblázat, a virtuális hívástáblázat, a feladó táblák, a vtable vagy a vftable egy mechanizmus, amelyet a programozási nyelvben használnak a dinamikus feladás (vagy a futásidejű módszer kötése) támogatására. Ha egy osztály egy virtuális függvényt (vagy metódust) határoz meg, akkor a legtöbb fordító hozzá egy rejtett tagváltozót az osztályhoz, amely a virtuális metódus-táblázat (VMT vagy Vtable) nevű virtuális metódus (virtuális) függvények felé mutat. Ezeket a mutatókat a futásidőben használják, hogy felhívják a megfelelő funkcionális implementációkat, mert a fordítási időben még nem ismert, hogy az alapfunkciót hívják-e le, vagy egy származtatott osztályt, amelyet az alap osztályból örökölt osztály hajt végre. Tegyük fel, hogy egy program több osztályt tartalmaz az öröklési hierarchiában: egy szuperosztály, egy macska és két alosztály, HouseCat és Lion. A Cat kategória egy virtuális függvényt határoz meg, melynek neve szó, ezért alosztályai megfelelő végrehajtást biztosíthatnak (például meow vagy ordítás). Amikor a program a Cat-referenciára hívja a beszéd funkciót (amely utalhat a Cat példányára vagy a HouseCat vagy Lion egy példányára), akkor a kódnak képesnek kell lennie meghatározni, hogy a hívás melyik funkciójának végrehajtása legyen. Ez attól függ, hogy az objektum tényleges osztályát, nem pedig a bejelentett Cat osztályát. Az osztályt általában nem lehet statikusan meghatározni (azaz fordítási időben), így a fordító sem tudja eldönteni, hogy melyik funkciót hívja fel. A hívást a jobb funkcióhoz dinamikusan (vagyis futási idő alatt) kell elküldeni. Az ilyen dinamikus küldés számos különböző módon valósítható meg, de a hordozható (virtuális asztal) megoldás különösen gyakori a C és a kapcsolódó nyelvek (például a D és a C #) között. Az objektumok programozási felületét különféle elválasztó nyelvek, mint a Visual Basic és a Delphi, ugyancsak hajlamosak a vtable megközelítésre, mivel lehetővé teszik az objektumok számára, hogy más módszert használjanak egyszerűen egy másik módszermutató használatával. [Programozási nyelv][Virtuális funkció][D: programozási nyelv] |