dispatch table

Ü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. Adispatch 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)

  1. (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 → vptrvtable → 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ényeknekvtable
  • Használható kézzel is: function pointer array, map<string, function<>>, stb.