Différence entre la liaison statique et dynamique

Auteur: Laura McKinney
Date De Création: 1 Avril 2021
Date De Mise À Jour: 1 Juillet 2024
Anonim
Différence entre la liaison statique et dynamique - La Technologie
Différence entre la liaison statique et dynamique - La Technologie

Contenu


L'association d'une association d'une ‘définition de fonction’ à un ‘appel de fonction’ ou d’une association d’une ‘valeur’ à une ‘variable’ est appelée ‘liaison’. Lors de la compilation, chaque «définition de fonction» se voit attribuer une adresse mémoire; dès que l’appel de fonction est terminé, le contrôle de l’exécution du programme passe à cette adresse mémoire et le code de fonction stocké à cet emplacement est exécuté, il s’agit de lier ‘appel de fonction’ à ‘définition de fonction’. La liaison peut être classée en «liaison statique» et en «liaison dynamique».

S'il est déjà connu avant l'exécution, quelle fonction sera appelée ou quelle valeur est attribuée à une variable, il s'agit alors d'une ‘liaison statique’. s’il s’agit de le savoir au moment de l’exécution, on l’appellera «liaison dynamique».


  1. Tableau de comparaison
  2. Définition
  3. Différences Clés
  4. Conclusion

Tableau de comparaison:

Base de comparaisonLiaison statiqueReliure dynamique
Occurrence d'événementLes événements qui se produisent lors de la compilation sont "Static Binding".
Les événements qui se produisent au moment de l’exécution sont "Liaison dynamique".
InformationToutes les informations nécessaires pour appeler une fonction sont connues au moment de la compilation.Toutes les informations doivent appeler une fonction à connaître au moment de l'exécution.
AvantageEfficacité.Souplesse.
TempsExécution rapide.Exécution lente.
Nom alternatifReliure précoce.Reliure tardive.
ExempleAppel de fonction surchargé, opérateurs surchargés.Fonction virtuelle en C ++, méthodes écrasées en java.

Définitions de la liaison statique

Lorsque le compilateur reconnaît toutes les informations requises pour appeler une fonction ou toutes les valeurs des variables pendant la compilation, cela s'appelle “reliure statique“. Comme toutes les informations requises sont connues avant l'exécution, cela augmente l'efficacité du programme, ainsi que la rapidité d'exécution du programme.


Static Binding rend un programme très efficace, mais diminue la flexibilité du programme, car les "valeurs de la variable" et "l'appel de fonction" sont prédéfinis dans le programme. La liaison statique est implémentée dans un programme au moment du codage.

La surcharge d'une fonction ou d'un opérateur est l'exemple du polymorphisme au moment de la compilation, c'est-à-dire la liaison statique.

Implémentation de la liaison statique en C ++ avec un exemple de surcharge

#comprendre using namespace std; surcharge de classe {int a, b; public: int load (int x) {// première fonction load (). a = x; cout << "La valeur de x est" <funct (); // L'instruction ci-dessus décide quelle fonction de classe doit être appelée. p = & d1; // Vlaue du pointeur change. p-> funct (); // L'instruction ci-dessus décide quelle fonction de classe doit être appelée. p = & d2; // Encore une fois, la valeur du pointeur change. p-> funct (); // L'instruction ci-dessus décide quelle fonction de classe doit être appelée. retourne 0; }

Ici, la valeur du pointeur change lorsque le programme est en cours d’exécution et que la valeur du pointeur détermine la fonction de la classe à invoquer. Donc ici, les informations sont fournies au moment de l’exécution, il faut du temps pour lier les données, ce qui ralentit l’exécution.

  1. Les événements qui se produisent au moment de la compilation, comme lorsqu'un code de fonction est associé à un appel de fonction ou à une affectation de valeur à une variable, sont appelés static / early Binding. Au contraire, lorsque ces tâches sont accomplies pendant l'exécution, elles sont appelées liaison dynamique / tardive.
  2. L’efficacité augmente dans la liaison statique, car toutes les données sont rassemblées avant l’exécution. Mais dans Dynamic Binding, les données sont acquises au moment de l’exécution, ce qui nous permet de décider quelle valeur attribuer à une variable et quelle fonction à appeler lors de l’exécution, ce qui rend l’exécution «flexible».
  3. La «liaison statique» accélère l’exécution du programme car toutes les données nécessaires à l’exécution d’un programme sont connues avant l’exécution. En «liaison dynamique», le compilateur connaît les données nécessaires à l’exécution d’un programme au moment de l’exécution, ce qui prend du temps pour lier des valeurs à des identificateurs; par conséquent, l'exécution du programme est ralentie.
  4. La liaison statique est également appelée liaison anticipée, car le code de fonction est associé à l'appel de fonction au moment de la compilation, ce qui est antérieur à la liaison dynamique dans laquelle le code de fonction est associé à l'appel de fonction au moment de l'exécution, il est également appelé liaison tardive.

Conclusion:

Cependant, nous concluons que lorsque nous avons une connaissance préalable des valeurs des appels de variables et de fonctions, nous appliquons la liaison statique. Inversement, dans Binding dynamique, nous fournissons toutes les informations au moment de l’exécution.