Ugrás a tartalomhoz

static dispatch

A Wikiszótárból, a nyitott szótárból


Főnév

static dispatch (tsz. static dispatches)

  1. (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.