Rozdiel medzi statickým a dynamickým viazaním
![Rozdiel medzi statickým a dynamickým viazaním - Technológie Rozdiel medzi statickým a dynamickým viazaním - Technológie](https://a.fondoperlaterra.org/technology-differences/difference-between-static-and-dynamic-binding.jpg)
Obsah
- Porovnávacia tabuľka:
- Definície statickej väzby
- Implementácia statickej väzby v C ++ s príkladom preťaženia
- záver:
Záväzné priradenie „definície funkcie“ k „volaniu funkcie“ alebo priradenie „hodnoty“ k „premennej“ sa nazýva „záväzné“. Počas kompilácie je každej „definícii funkcie“ priradená adresa pamäte; Hneď ako je volanie funkcie ukončené, riadenie vykonávania programu sa presunie na túto pamäťovú adresu a vykoná sa uloženie kódu funkcie na tomto mieste. Toto je Viazanie „volania funkcie“ na „definíciu funkcie“. Viazanie možno klasifikovať ako „statické viazanie“ a „dynamické viazanie“.
Ak je to už známe pred spustením, ktorá funkcia bude vyvolaná alebo aká hodnota je priradená premennej, potom ide o „statickú väzbu“. ak sa to zistí za behu, nazýva sa „dynamická väzba“.
- Porovnávacia tabuľka
- definícia
- Kľúčové rozdiely
- záver
Porovnávacia tabuľka:
Základ pre porovnanie | Statická väzba | Dynamické viazanie |
---|---|---|
Výskyt udalosti | Udalosti, ktoré sa vyskytujú v čase kompilácie, sú „statická väzba“. | Udalosti, ktoré sa vyskytujú v čase spustenia, sú „Dynamická väzba“. |
informácie | Všetky informácie potrebné na volanie funkcie sú známe v čase kompilácie. | Všetky informácie je potrebné zavolať funkcii, ktorá je známa v čase spustenia. |
výhoda | Efektivitu. | Flexibilita. |
čas | Rýchle vykonanie. | Pomalé vykonávanie. |
Alternatívny názov | Včasné viazanie. | Neskoré viazanie. |
príklad | Preťažené volanie funkcie, preťažení operátori. | Virtuálna funkcia v C ++, prepísané metódy v jave. |
Definície statickej väzby
Keď kompilátor počas kompilácie potvrdí všetky informácie potrebné na volanie funkcie alebo všetkých hodnôt premenných, nazýva sa „statická väzba". Pretože všetky požadované informácie sú známe pred spustením, zvyšuje účinnosť programu a zvyšuje aj rýchlosť vykonávania programu.
Statická väzba robí program veľmi efektívnym, ale znižuje flexibilitu programu, pretože „hodnoty premennej“ a „volanie funkcie“ sú v programe preddefinované. Statické viazanie sa implementuje do programu v čase kódovania.
Preťaženie funkcie alebo operátora je príkladom polymorfizmu kompilácie, t. J. Statického viazania.
Implementácia statickej väzby v C ++ s príkladom preťaženia
#include Tu sa zmení hodnota ukazovateľa, keď sa program vykonáva, a hodnota ukazovateľa určuje, ktorá funkcia triedy sa vyvolá. Takže tu sú informácie poskytované v čase vykonávania, vyžaduje čas, aby sa spojili údaje, ktoré spomaľujú vykonávanie. Dospeli sme však k záveru, že keď máme predchádzajúce znalosti o hodnotách volania premenných a funkcií, použijeme statickú väzbu. Naopak, v dynamickej väzbe poskytujeme všetky informácie v čase vykonávania.
záver: