Rozdiel medzi statickým a dynamickým viazaním

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
Rozdiel medzi statickým a dynamickým viazaním - Technológie
Rozdiel medzi statickým a dynamickým viazaním - Technológie

Obsah


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“.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka:

Základ pre porovnanieStatická väzbaDynamické viazanie
Výskyt udalostiUdalosti, ktoré sa vyskytujú v čase kompilácie, sú „statická väzba“.
Udalosti, ktoré sa vyskytujú v čase spustenia, sú „Dynamická väzba“.
informácieVš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ýhodaEfektivitu.Flexibilita.
časRýchle vykonanie.Pomalé vykonávanie.
Alternatívny názovVčasné viazanie.Neskoré viazanie.
príkladPreť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 pomocou namespace std; preťaženie triedy {int a, b; public: int load (int x) {// funkcia prvého načítania (). a = x; cout << "Hodnota x je" <Funct (); // Vyššie uvedené vyhlásenie určuje, ktoré funkcie tried sa majú vyvolať. p = d1; // Vlaue kurzora sa zmení. p-> Funct (); // Vyššie uvedené vyhlásenie určuje, ktoré funkcie tried sa majú vyvolať. p = d2; // Znovu sa zmení ukazovateľ ukazovateľa. p-> Funct (); // Vyššie uvedené vyhlásenie určuje, ktoré funkcie tried sa majú vyvolať. návrat 0; }

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.


  1. Udalosti, ktoré sa vyskytnú v čase kompilácie, ako je funkčný kód, sú spojené s volaním funkcie alebo priradením hodnoty premennej, nazývajú sa statické / skoré viazanie. Naopak, keď sa tieto úlohy vykonávajú počas behu programu, nazývajú sa dynamické / oneskorené viazanie.
  2. Efektivita sa zvyšuje v statickej väzbe, pretože všetky údaje sa zhromažďujú pred vykonaním. V prípade dynamického viazania sa však údaje získavajú za behu, takže sa môžeme rozhodnúť, akú hodnotu priradiť premennej a ktorá funkcia sa má spustiť za behu, čo robí vykonávanie „flexibilnou“.
  3. Vďaka „statickej väzbe“ je vykonávanie programu „rýchlejšie“, pretože všetky údaje potrebné na vykonanie programu sú známe pred vykonaním. V „dynamickom viazaní“ sú údaje potrebné na vykonanie programu známe kompilátorovi v čase vykonávania, ktoré vyžaduje čas, aby viazal hodnoty na identifikátory; z tohto dôvodu je vykonávanie programu pomalšie.
  4. Statická väzba sa tiež nazýva skorá väzba, pretože funkčný kód je spojený s volaním funkcie počas kompilácie, čo je skoršie ako dynamické viazanie, v ktorom je funkčný kód spojený s volaním funkcie počas runtime, preto sa tiež nazýva neskorá väzba.

záver:

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.