Üdvözlöm, Ön a
dispatch table szó jelentését keresi. A DICTIOUS-ban nem csak a
dispatch table szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a
dispatch table szót egyes és többes számban mondani. Minden, amit a
dispatch table szóról tudni kell, itt található. A
dispatch table szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. A
dispatch table és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.
Főnév
dispatch table (tsz. dispatch tables)
- (informatika) A dispatch table egy olyan adatstruktúra, amely függvényekhez társít azonosítókat vagy kulcsokat, és lehetővé teszi, hogy a program futás közben dinamikusan válassza ki, melyik függvényt hívja meg.
Leggyakrabban objektumorientált programozásban (OOP) használják késői kötés (late binding) megvalósítására, de nem csak OOP-ben fordul elő.
🧠 Összefoglalás dióhéjban
Fogalom
|
Jelentés
|
Dispatch Table
|
Táblázat, amely függvényeket tárol
|
Használat célja
|
Dinamikus függvényhívás futásidőben
|
Leggyakoribb forma
|
VTable (virtuális függvénytábla C++-ban)
|
Alapelve
|
Egy mutató → megfelelő függvényhívás
|
📦 Példa – C++: Virtuális függvénytábla (vtable
)
#include <iostream>
using namespace std;
class Alap {
public:
virtual void hello() { cout << "Alap::hello()\n"; }
};
class Szarmaztatott : public Alap {
public:
void hello() override { cout << "Szarmaztatott::hello()\n"; }
};
int main() {
Alap* p = new Szarmaztatott();
p->hello(); // Futásidőben a dispatch table (vtable) dönti el
delete p;
}
Itt a p->hello()
nem fordításkor, hanem futásidőben kerül eldöntésre. A fordító egy mutatót helyez el a vtable-re, és ezen keresztül éri el a megfelelő függvényt. Ez a dispatch table
.
🧰 Általános C-stílusú példa (kézzel épített dispatch tábla)
#include <stdio.h>
void start() { printf("Start selected\n"); }
void stop() { printf("Stop selected\n"); }
typedef void (*CommandFunc)();
int main() {
CommandFunc table = {start, stop};
int choice = 1; // dinamikusan kiválasztott függvény
table(); // Meghívja: stop()
return 0;
}
Ez a példában table
a dispatch table. Index alapján választjuk ki a megfelelő függvényt.
🧩 Alkalmazási területek
- Virtuális függvények (OOP): minden példány
vtable
-t használ
- Állapotgépek (state machine): az aktuális állapot határozza meg, melyik függvény aktiválódik
- Interfészek implementálása dinamikusan: pl. COM (Component Object Model) rendszerek
- Parancsértelmezők: utasításnevek → végrehajtó függvények
⚙️ Előnyök és hátrányok
✅ Előnyök:
- Rugalmasság: dinamikusan kiválasztható függvény
- Kód tisztasága: elkerülhetők a sok
switch
vagy if
szerkezet
- Polimorfizmus alapja: különösen OOP nyelvekben
❌ Hátrányok:
- Lassabb: egy extra indirekciós lépést igényel
- Nehezebb hibakeresés: nem mindig egyértelmű, melyik függvény hívódik meg
- Memóriaköltség: extra mutatótáblák
🔍 Belső működés (vtable C++-ban)
- A fordító minden virtuális osztályhoz létrehoz egy táblát (
vtable
)
- Minden objektumhoz tartozik egy vtable mutató (
vptr
)
- A
vptr
az objektum példányában tárolódik
- Függvényhíváskor →
vptr
→ vtable
→ megfelelő függvényhívás
🧠 TL;DR
- A dispatch table egy struktúra, amelyben kulcsokhoz függvények vannak rendelve
- Segítségével dinamikusan választhatunk függvényeket futásidőben
- C++-ban ez az alapja a virtuális függvényeknek →
vtable
- Használható kézzel is:
function pointer array
, map<string, function<>>
, stb.