Verschil tussen statische en dynamische binding
![Statische en dynamische wrijvingskracht](https://i.ytimg.com/vi/DTgfnYUqJHQ/hqdefault.jpg)
Inhoud
- Vergelijkingstabel:
- Definities van statische binding
- Implementatie van statische binding in C ++ met een voorbeeld van overbelasting
- Gevolgtrekking:
Bindende associatie van een ‘functiedefinitie’ aan een ‘functieaanroep’ of een associatie van een ‘waarde’ aan een ‘variabele’, wordt ‘bindend’ genoemd. Tijdens het compileren krijgt elke ‘functiedefinitie’ een geheugenadres; Zodra functieoproep is voltooid, wordt de controle van de programma-uitvoering naar dat geheugenadres verplaatst en wordt de functiecode op die locatie uitgevoerd. Dit is Binding van ‘functie-oproep’ aan ‘functiedefinitie’. Binding kan worden geclassificeerd als ‘statische binding’ en ‘dynamische binding’.
Als het voor runtime al bekend is, welke functie wordt aangeroepen of welke waarde aan een variabele wordt toegewezen, is het een ‘statische binding’. als het tijdens de looptijd bekend wordt, wordt het ‘dynamische binding’ genoemd.
- Vergelijkingstabel
- Definitie
- Belangrijkste verschillen
- Gevolgtrekking
Vergelijkingstabel:
Basis voor vergelijking | Statische binding | Dynamische binding |
---|---|---|
Gebeurtenis optreden | Gebeurtenissen die zich voordoen tijdens het compileren zijn "Static Binding". | Gebeurtenissen die plaatsvinden tijdens runtime zijn "Dynamic Binding". |
Informatie | Alle informatie die nodig is om een functie aan te roepen, is bekend tijdens het compileren. | Alle informatie moet een functie oproepen tijdens de uitvoering. |
Voordeel | Efficiency. | Flexibiliteit. |
Tijd | Snelle uitvoering. | Langzame uitvoering. |
bijnaam | Vroege binding. | Late binding. |
Voorbeeld | Overbelaste functie-oproep, overbelaste operators. | Virtuele functie in C ++, overschreven methoden in Java. |
Definities van statische binding
Wanneer de compiler alle informatie erkent die nodig is om een functie of alle waarden van de variabelen tijdens de compilatie aan te roepen, wordt deze 'statische binding“. Aangezien alle vereiste informatie bekend is vóór runtime, verhoogt dit de efficiëntie van het programma en verbetert het ook de snelheid van uitvoering van een programma.
Statische binding maakt een programma zeer efficiënt, maar het vermindert de programmaflexibiliteit, omdat ‘waarden van de variabele’ en ‘functie-aanroeping’ vooraf in het programma zijn gedefinieerd. Statische binding wordt geïmplementeerd in een programma op het moment van codering.
Het overbelasten van een functie of een operator is het voorbeeld van compileertijd polymorfisme, d.w.z. statische binding.
Implementatie van statische binding in C ++ met een voorbeeld van overbelasting
#include Hier verandert de waarde van de aanwijzer terwijl het programma wordt uitgevoerd en de waarde van de aanwijzer bepaalt welke functie van de klasse wordt aangeroepen. Dus hier wordt de informatie tijdens de uitvoering verstrekt, het kost de tijd om de gegevens te binden, wat de uitvoering vertraagt. We concluderen echter dat wanneer we voorkennis hebben van de waarden van variabele en functieaanroep, we de statische binding toepassen. Omgekeerd bieden we in dynamische binding alle informatie op het moment van uitvoering.
Gevolgtrekking: