Különbség a statikus és a dinamikus kötés között

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 10 Lehet 2024
Anonim
Különbség a statikus és a dinamikus kötés között - Technológia
Különbség a statikus és a dinamikus kötés között - Technológia

Tartalom


A „funkciódefiníció” és a „funkcióhívás” összekapcsolását, vagy az „érték” és a „változó” asszociációját kötelezőnek nevezzük. Az összeállítás során minden „funkciódefiníciónak” kap egy memóriacímet; mihelyt a funkcióhívás befejeződött, a program végrehajtásának ellenőrzése arra a memória címre költözik, és végrehajtásra kerül az abban a helyen tárolt funkciókód, ez a „funkcióhívás” kötődése a „funkció meghatározásához”. A kötés „statikus kötés” és „dinamikus kötés” kategóriába sorolható.

Ha már a futásidejű előtt ismert, hogy melyik funkcióra hívják meg a felhasználót, vagy milyen értéket rendelnek egy változónak, akkor ez egy „statikus kötés”. ha a futás közben megtudja, akkor azt „dinamikus kötésnek” hívják.


  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat:

Az összehasonlítás alapjaStatikus kötésDinamikus kötés
Esemény előfordulásaA fordításkor bekövetkező események "statikus kötés".
A futás közben bekövetkező események "dinamikus kötés".
InformációA függvény meghívásához szükséges összes információ a fordítás idején ismert.A függvény meghívásához szükséges összes információ megismerhetővé válik futás közben.
ElőnyHatékonyság.Rugalmasság.
IdőGyors végrehajtás.Lassú végrehajtás.
Alternatív névKorai kötés.Késői kötés.
PéldaTúlterhelt funkcióhívás, túlterhelt operátorok.Virtuális funkció C ++-ban, felülbírált módszerek a java-ban.

A statikus kötés meghatározása

Amikor a fordító nyugtázza a függvény meghívásához szükséges összes információt vagy a változók összes értékét a fordítás ideje alatt, akkor azt „statikus kötés„. Mivel az összes szükséges információ a futási idő előtt ismert, ez növeli a program hatékonyságát, és megnöveli a program végrehajtásának sebességét.


A statikus kötés nagyon hatékonyvá teszi a programot, de csökkenti a program rugalmasságát, mivel a „változó értékei” és a „függvényhívás” előre definiálva vannak a programban. A statikus kötést egy programban hajtják végre a kódolás idején.

A függvény vagy az operátor túlterhelése példája a fordítási idő polimorfizmusra, azaz statikus kötésre.

A statikus kötés megvalósítása a C ++-ban egy példaként a túlterhelésről

#include névtér std; osztály túlterhelés {int a, b; public: int betöltés (int x) {// első betöltés () függvény. a = x; cout << "x értéke" <funct (); // A fenti állítás határozza meg, hogy melyik osztályfüggvényt kell meghívni. p = & D1; // A mutató alakja megváltozik. p-> funct (); // A fenti állítás határozza meg, hogy melyik osztályfüggvényt kell meghívni. p = & d2; // A mutató ismét változik. p-> funct (); // A fenti állítás határozza meg, hogy melyik osztályfüggvényt kell meghívni. visszatérés 0; }

Itt a mutató értéke megváltozik, amikor a program végrehajtásra kerül, és az mutató értéke eldönti, hogy melyik osztály funkciójára kell hivatkozni. Tehát itt az információ futási időben kerül megadásra, időbe telik az adatok megkötése, ami lelassítja a végrehajtást.

  1. Azokat az eseményeket, amelyek fordításkor fordulnak elő, például egy függvénykódot társítanak egy függvényhívással vagy érték hozzárendelésével egy változóhoz, statikus / korai kötésnek hívják. Éppen ellenkezőleg, ha ezeket a feladatokat futási idő alatt hajtják végre, akkor dinamikus / késői kötésnek hívják.
  2. A „hatékonyság” növekszik a statikus kötésben, mivel az összes adat a végrehajtás előtt összegyűjtésre kerül. De a dinamikus kötés során az adatokat futásidejűleg szerezzük be, így eldönthetjük, hogy milyen értéket kell hozzárendelni egy változóhoz, és melyik funkciót kell futtatni, ez a végrehajtást rugalmassá teszi.
  3. A „statikus kötés” a program végrehajtását gyorsabbá teszi, mivel a program végrehajtásához szükséges összes adat a végrehajtás előtt ismert. A „dinamikus kötés” során a program végrehajtásához szükséges adatok a végrehajtó időpontban ismertek a fordító számára, amely időbe telik az értékek azonosítókhoz történő kötéséhez; ennélfogva lassítja a program végrehajtását.
  4. A statikus összerendelést korai összerendelésnek is nevezzük, mivel a funkciókódot a függvényhívással társítják a fordítási idõ alatt, ami korábbi, mint a dinamikus összerendelés, amelyben a funkciókód a futásidejû funkcióhíváshoz van társítva, ezért késõi összerendelésnek is hívják.

Következtetés:

Azt a következtetést vonjuk le, hogy amikor a változó és a függvényhívás értékeirõl elõzetes ismereteink vannak, akkor statikus kötést alkalmazunk. Ezzel szemben a dinamikus kötés során minden információt megadunk a végrehajtáskor.