static dispatch
Megjelenés
Főnév
static dispatch (tsz. static dispatches)
- (informatika) A statikus dispatch (statikus hívás) a C++-ban egy olyan mechanizmus, amely a függvényhívásokat már a fordítási idő alatt dönt el, azaz a program fordítása során meghatározza, hogy melyik függvényt kell meghívni. Ez ellentétben áll a dinamikus dispatch-csel, ahol a függvényhívásokat a futásidő alatt, például polimorfizmus vagy öröklődés esetén választják ki.
A statikus dispatch akkor fordul elő, amikor a hívott függvény a típusok alapján egyértelműen meghatározható a fordítási időben. Ilyen például, amikor a függvények nem használják a dinamikus típusokat, és a fordító képes közvetlenül kiválasztani a megfelelő függvényt.
Példa statikus dispatch-re C++-ban:
#include <iostream>
class Base {
public:
void show() {
std::cout << "Base class show function\n";
}
};
class Derived : public Base {
public:
void show() {
std::cout << "Derived class show function\n";
}
};
int main() {
Base b;
Derived d;
b.show(); // Base class show function
d.show(); // Derived class show function
return 0;
}
A fenti példában a show() függvény hívása statikusan van dispatch-elve, mivel a hívott függvények típusai egyértelműek a fordítási időben (a típusok nem dinamikusak, hanem statikus típusok).
Ha viszont a virtuális függvényeket használunk (például a virtual kulcsszóval), akkor a dispatch dinamikussá válik, mivel a pontos függvény a futásidőben kerül kiválasztásra.
Statikus dispatch és dinamikus dispatch közötti különbség:
- Statikus dispatch: A függvényhívásokat a fordító időben dönti el, gyorsabb és egyszerűbb.
- Dinamikus dispatch: A függvényhívásokat futásidőben dönti el, és lehetővé teszi a polimorfizmust, de lassabb, mert a típusokat futásidőben kell meghatározni.
- static dispatch - Szótár.net (en-hu)
- static dispatch - Sztaki (en-hu)
- static dispatch - Merriam–Webster
- static dispatch - Cambridge
- static dispatch - WordNet
- static dispatch - Яндекс (en-ru)
- static dispatch - Google (en-hu)
- static dispatch - Wikidata
- static dispatch - Wikipédia (angol)