Különbség a statikus és a dinamikus kötés között
Tartalom
- Összehasonlító táblázat:
- A statikus kötés meghatározása
- A statikus kötés megvalósítása a C ++-ban egy példaként a túlterhelésről
- Következtetés:
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.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat:
Az összehasonlítás alapja | Statikus kötés | Dinamikus kötés |
---|---|---|
Esemény előfordulása | A 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őny | Hatékonyság. | Rugalmasság. |
Idő | Gyors végrehajtás. | Lassú végrehajtás. |
Alternatív név | Korai kötés. | Késői kötés. |
Példa | Tú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 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. 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.
Következtetés: