Rozdíl mezi statickou a dynamickou vazbou

Autor: Laura McKinney
Datum Vytvoření: 1 Duben 2021
Datum Aktualizace: 1 Červenec 2024
Anonim
Rozdíl mezi statickou a dynamickou vazbou - Technologie
Rozdíl mezi statickou a dynamickou vazbou - Technologie

Obsah


Vazebné přiřazení „definice funkce“ k „volání funkce“ nebo přidružení „hodnoty“ k „proměnné“ se nazývá „závazné“. Během kompilace je každé „definici funkce“ přiřazena adresa paměti; Jakmile je volání funkce ukončeno, přesune se řízení provádění programu na tuto paměťovou adresu a provede se uložení kódu funkce na tomto místě. Jedná se o vazbu „volání funkce“ na „definici funkce“. Vazba může být klasifikována jako „statická vazba“ a „dynamická vazba“.

Pokud již je známo před spuštěním, která funkce bude vyvolána nebo jaká hodnota je přiřazena proměnné, jedná se o „statickou vazbu“. pokud se to za běhu dozví, nazývá se „dynamická vazba“.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka:

Základ pro srovnáníStatická vazbaDynamická vazba
Výskyt událostiUdálosti, ke kterým dochází v době kompilace, jsou „statická vazba“.
Události, ke kterým dochází v době běhu, jsou „Dynamická vazba“.
InformaceVšechny informace potřebné k vyvolání funkce jsou známy při kompilaci.Všechny informace je třeba zavolat, aby se funkce dozvěděla za běhu.
VýhodaÚčinnost.Flexibilita.
ČasRychlé provedení.Pomalé provádění.
Alternativní jménoVčasná vazba.Pozdní vazba.
PříkladPřetížené volání funkce, přetížené operátory.Virtuální funkce v C ++, přepsané metody v javě.

Definice statické vazby

Když kompilátor během kompilace potvrdí všechny informace potřebné k vyvolání funkce nebo všech hodnot proměnných, nazývá se „statická vazba“. Protože všechny požadované informace jsou známy před během programu, zvyšuje účinnost programu a také zvyšuje rychlost provádění programu.


Statická vazba dělá program velmi efektivním, ale snižuje flexibilitu programu, protože „hodnoty proměnné“ a „volání funkce“ jsou v programu předdefinovány. Statická vazba je implementována v programu v době kódování.

Přetížení funkce nebo operátora je příkladem polymorfismu kompilace, tj. Statické vazby.

Implementace statické vazby v C ++ s ukázkou přetížení

#zahrnout pomocí oboru názvů std; přetížení třídy {int a, b; public: int load (int x) {// first load () funkce. a = x; cout << "Hodnota x je" <funct (); // Výše ​​uvedený příkaz rozhoduje, které funkce tříd mají být vyvolány. p = & d1; // Vlaue ukazatele se změní. p-> funct (); // Výše ​​uvedený příkaz rozhoduje, které funkce tříd mají být vyvolány. p = & d2; // Znovu se změní trasa ukazatele. p-> funct (); // Výše ​​uvedený příkaz rozhoduje, které funkce tříd mají být vyvolány. návrat 0; }

Zde se hodnota ukazatele mění, jak je program prováděn, a hodnota ukazatele rozhodne, která funkce třídy bude vyvolána. Tady jsou tedy informace poskytovány za běhu, trvá čas, než se spojí data, která zpomalují provádění.


  1. Události, ke kterým dojde v době kompilace, jako je funkční kód, jsou spojeny s voláním funkce nebo přiřazením hodnoty proměnné, se nazývají statická / časná vazba. Naopak, když jsou tyto úkoly prováděny během běhu, nazývají se dynamické / pozdní vazby.
  2. „Efektivita“ zvyšuje statickou vazbu, protože všechna data jsou shromažďována před provedením. V dynamické vazbě jsou však data získávána za běhu, takže se můžeme rozhodnout, jakou hodnotu přiřadit proměnnou a kterou funkci vyvolat za běhu, takže je provádění „flexibilní“.
  3. „Statická vazba“ zrychluje provádění programu „rychleji“, protože všechna data potřebná k provedení programu jsou známa před provedením. V „dynamických vazbách“ jsou data potřebná k provedení programu známa kompilátoru v době provádění, což zabere čas k navázání hodnot k identifikátorům; proto zpomaluje provádění programu.
  4. Statická vazba se také nazývá časná vazba, protože funkční kód je spojen s vyvoláním funkce během kompilačního času, což je dřívější než dynamické vázání, ve kterém je funkční kód spojen s vyvoláním funkce během běhu, proto se také nazývá pozdní vazba.

Závěr:

Došli jsme však k závěru, že když máme předchozí znalosti o hodnotách volání proměnné a funkce, aplikujeme statickou vazbu. Naopak, v dynamické vazbě poskytujeme všechny informace v době provedení.