Forskel mellem statisk og dynamisk binding

Forfatter: Laura McKinney
Oprettelsesdato: 1 April 2021
Opdateringsdato: 1 Juli 2024
Anonim
SCP Readings: SCP-4730 Earth Crucified | object class keter | extradimensional scp
Video.: SCP Readings: SCP-4730 Earth Crucified | object class keter | extradimensional scp

Indhold


Binding af tilknytning af en 'funktionsdefinition' til et 'funktionsopkald' eller en tilknytning af en 'værdi' til en 'variabel' kaldes 'bindende'. Under kompilering får hver 'funktionsdefinition' en hukommelsesadresse; så snart funktionsopkald er udført, flyttes kontrol af programudførelse til den hukommelsesadresse og får funktionskoden gemt på det sted, der er udført, dette er binding af 'funktionsopkald' til 'funktionsdefinition'. Binding kan klassificeres som 'statisk binding' og 'dynamisk binding'.

Hvis det allerede er kendt inden runtime, hvilken funktion der påberåbes, eller hvilken værdi der er tildelt en variabel, er det en 'statisk binding'. hvis det bliver kendt under kørslen, kaldes det 'dynamisk binding'.

  1. Sammenligningstabel
  2. Definition
  3. Vigtige forskelle
  4. Konklusion

Sammenligningstabel:

Grundlag for sammenligningStatisk bindingDynamisk binding
BegivenhedsbegivenhedBegivenheder, der opstår på kompileringstidspunktet, er "Statisk binding".
Begivenheder, der forekommer ved kørselstidspunktet er "Dynamisk binding".
InformationAl information, der er nødvendig for at ringe til en funktion, er kendt på kompileringstidspunktet.Al information skal til for at ringe til en funktion blive kendt på kørselstidspunktet.
FordelEffektivitet.Fleksibilitet.
TidHurtig udførelse.Langsom henrettelse.
Alternativ navnTidlig binding.Sen binding.
EksempelOverbelastet funktionsopkald, overbelastede operatører.Virtuel funktion i C ++, tilsidesatte metoder i java.

Definitioner af statisk binding

Når kompilatoren anerkender alle de oplysninger, der kræves for at ringe til en funktion eller alle værdierne for variablerne under kompileringstiden, kaldes den "statisk binding”. Da alle de krævede oplysninger er kendt inden runtime, øger det programeffektiviteten, og det forbedrer også hastigheden for udførelse af et program.


Statisk binding gør et program meget effektivt, men det afviser programfleksibiliteten, da 'værdier af variablen' og 'funktionsopkald' er foruddefineret i programmet. Statisk binding er implementeret i et program på kodningstidspunktet.

Overbelastning af en funktion eller en operator er eksemplet på kompileringstid-polymorfisme, dvs. statisk binding.

Implementering af statisk binding i C ++ med et eksempel på overbelastning

#omfatte ved hjælp af navneområde std; klasse overbelastning {int a, b; public: int load (int x) {// first load () funktion. a = x; cout << "Værdien af ​​x er" <funct (); // Ovenstående udsagn afgør, hvilken klassefunktion der skal påberåbes. p = & d1; // Vlaue af markøren ændres. p-> funct (); // Ovenstående udsagn afgør, hvilken klassefunktion der skal påberåbes. p = & d2; // Igen ændrer markøren til markøren. p-> funct (); // Ovenstående udsagn afgør, hvilken klassefunktion der skal påberåbes. retur 0; }

Her ændres markørens værdi, når programmet er i udførelse, og værdien af ​​markøren bestemmer, hvilken klasses funktion, der skal påberåbes. Så her gives informationen ved kørsel, det tager tid at binde de data, der bremser udførelsen.


  1. Begivenheder, der opstår på kompileringstidspunktet, som en funktionskode er forbundet med et funktionsopkald eller tildeling af værdi til en variabel, kaldes statisk / tidlig binding. Tværtimod, når disse opgaver udføres under kørsel, kaldes de dynamisk / sent bindende.
  2. 'Effektivitet' stiger i statisk binding, da alle data er samlet inden udførelsen. Men i dynamisk binding, erhverves dataene ved kørselstid, så vi kan beslutte, hvilken værdi, der skal tildeles en variabel, og hvilken funktion der skal påberåbes ved kørsel, dette gør udførelsen 'fleksibel'.
  3. 'Statisk binding' gør udførelsen af ​​et program 'hurtigere', da alle de data, der er nødvendige for at udføre et program, er kendt inden udførelsen. I 'dynamisk binding' er data, der er nødvendige for at udføre et program, kendt af kompilatoren på udførelsestidspunktet, hvilket tager tid at binde værdier til identifikatorer; derfor gør det programkørsel langsommere.
  4. Statisk binding kaldes også tidlig binding, fordi funktionskoden er forbundet med funktionsopkald i kompileringstiden, hvilket er tidligere end dynamisk binding, hvor funktionskode er forbundet med funktionskald i løbet af runtime, derfor kaldes det også for sen binding.

Konklusion:

Vi konkluderer imidlertid, at når vi har forudgående viden om værdierne for variabel- og funktionsopkald, anvender vi den statiske binding. Omvendt, i dynamisk binding, giver vi alle oplysninger på udførelsestidspunktet.