Forskel mellem statisk og dynamisk binding
![SCP Readings: SCP-4730 Earth Crucified | object class keter | extradimensional scp](https://i.ytimg.com/vi/48H4A4mI2uI/hqdefault.jpg)
Indhold
- Sammenligningstabel:
- Definitioner af statisk binding
- Implementering af statisk binding i C ++ med et eksempel på overbelastning
- Konklusion:
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'.
- Sammenligningstabel
- Definition
- Vigtige forskelle
- Konklusion
Sammenligningstabel:
Grundlag for sammenligning | Statisk binding | Dynamisk binding |
---|---|---|
Begivenhedsbegivenhed | Begivenheder, der opstår på kompileringstidspunktet, er "Statisk binding". | Begivenheder, der forekommer ved kørselstidspunktet er "Dynamisk binding". |
Information | Al 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. |
Fordel | Effektivitet. | Fleksibilitet. |
Tid | Hurtig udførelse. | Langsom henrettelse. |
Alternativ navn | Tidlig binding. | Sen binding. |
Eksempel | Overbelastet 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 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. 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.
Konklusion: