Verschil tussen statische en dynamische binding

Schrijver: Laura McKinney
Datum Van Creatie: 1 April 2021
Updatedatum: 1 Juli- 2024
Anonim
Statische en dynamische wrijvingskracht
Video: Statische en dynamische wrijvingskracht

Inhoud


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.

  1. Vergelijkingstabel
  2. Definitie
  3. Belangrijkste verschillen
  4. Gevolgtrekking

Vergelijkingstabel:

Basis voor vergelijkingStatische bindingDynamische binding
Gebeurtenis optredenGebeurtenissen die zich voordoen tijdens het compileren zijn "Static Binding".
Gebeurtenissen die plaatsvinden tijdens runtime zijn "Dynamic Binding".
InformatieAlle informatie die nodig is om een ​​functie aan te roepen, is bekend tijdens het compileren.Alle informatie moet een functie oproepen tijdens de uitvoering.
VoordeelEfficiency.Flexibiliteit.
TijdSnelle uitvoering.Langzame uitvoering.
bijnaamVroege binding.Late binding.
VoorbeeldOverbelaste 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 namespace std; gebruiken; klasse overbelasting {int a, b; public: int load (int x) {// first load () functie. a = x; cout << "De waarde van x is" <funct (); // De bovenstaande instructie bepaalt welke klassenfunctie moet worden aangeroepen. p = & d1; // Vlaue van de aanwijzer verandert. p> funct (); // De bovenstaande instructie bepaalt welke klassenfunctie moet worden aangeroepen. p = & d2; // Opnieuw verandert de waarde van de aanwijzer. p> funct (); // De bovenstaande instructie bepaalt welke klassenfunctie moet worden aangeroepen. terugkeer 0; }

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.


  1. Gebeurtenissen die zich voordoen tijdens het compileren, zoals een functiecode die is gekoppeld aan een functieaanroep of toewijzing van waarde aan een variabele, worden statische / vroege binding genoemd. Integendeel, wanneer deze taken tijdens runtime worden volbracht, worden ze dynamische / late binding genoemd.
  2. ‘Efficiëntie’ neemt toe in statische binding, omdat alle gegevens worden verzameld vóór de uitvoering. Maar in dynamische binding, worden de gegevens tijdens runtime verzameld, zodat we kunnen beslissen welke waarde we een variabele toewijzen en welke functie we tijdens runtime willen gebruiken, dit maakt de uitvoering ‘flexibel’.
  3. ‘Statische binding’ maakt de uitvoering van een programma ‘sneller’ omdat alle gegevens die nodig zijn om een ​​programma uit te voeren bekend zijn vóór uitvoering. In ‘dynamische binding’ zijn de gegevens die nodig zijn om een ​​programma uit te voeren bekend bij de compiler op het moment van uitvoering, wat de tijd kost om waarden aan identifiers te binden; daarom wordt de uitvoering van het programma langzamer.
  4. Statische binding wordt ook vroege binding genoemd omdat de functiecode tijdens het compileren wordt geassocieerd met functie-aanroep, wat eerder is dan dynamische binding, waarbij functiecode tijdens runtime wordt geassocieerd met functie-aanroep en daarom ook late binding wordt genoemd.

Gevolgtrekking:

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.