Liaison dynamique en C++ : explication, fonctions et implémentation

Publié: 2021-02-04

Table des matières

introduction

Cet article va vous guider à travers le fonctionnement de la liaison dynamique en C++ . Vous devez avoir une connaissance de base du fonctionnement de l'héritage et de la liaison statique en C++. En effet, certaines limitations de la liaison statique sont supprimées par la liaison dynamique. Nous vous montrerons, avec des codes appropriés et simples, à quel point la liaison dynamique est utile.

Qu'est-ce que la liaison dynamique ?

Par liaison, nous entendons généralement lier un objet à un autre. En termes de langages de programmation, la liaison n'est pas très différente. C'est la liaison d'une définition de fonction et d'un appel de fonction. Mais pourquoi "dynamique" ? En termes simples, la liaison dynamique retarde simplement le choix ou la sélection de la fonction à exécuter jusqu'à son exécution. En utilisant la liaison dynamique en C++ , nous choisissons la fonction que nous pouvons exécuter en fonction du type sous-jacent de l'objet.

Cette flexibilité n'était pas offerte aux programmeurs avec une liaison statique. La liaison statique se produisait au moment de la compilation et non au moment de l'exécution. De plus, la liaison statique liait l'appel de fonction et la définition au moment de la compilation, alors que, comme vous le savez maintenant, la liaison dynamique ne le fait pas avant l'exécution.

La liaison dynamique nous permet d'ignorer les différences de type en nous offrant la flexibilité de choisir le type de fonction dont nous avons besoin à cet instant d' exécution. En examinant cette déclaration, nous pouvons comprendre que la liaison dynamique nous permet de gérer différents objets en utilisant un seul nom de fonction. Cela réduit la complexité du code et permet également au programmeur d'avoir plus de facilité lors du débogage.

Fonctions virtuelles

Nous avons beaucoup parlé de la liaison dynamique en C++ . Mais comment procéder avec ça ? Pour implémenter la liaison dynamique dans votre code C++, vous devez utiliser des "fonctions virtuelles". Que sont donc les fonctions virtuelles ?

Cet article n'abordera pas en profondeur les fonctions virtuelles car elles sont suffisamment importantes pour un article séparé. Mais vous recevrez suffisamment d'informations sur les fonctions virtuelles pour comprendre clairement la liaison dynamique.

Les fonctions virtuelles sont des fonctions membres spéciales auxquelles les appels effectués via un pointeur (ou une référence) sont résolus au moment de l'exécution, en fonction du type de l'objet avec le pointeur. En termes simples, si vous définissez une fonction virtuelle dans une classe de base, vous pouvez remplacer la fonction dans les classes dérivées.

C'est la puissance des fonctions virtuelles. En C++, vous définissez une fonction virtuelle en utilisant le mot-clé 'virtual' au début de la définition de la fonction. Vous n'aurez peut-être pas à répéter le mot-clé virtual pour chaque classe dérivée d'une classe de base car une fois qu'une fonction est déclarée « virtuelle », elle restera « virtuelle » dans toutes les classes dérivées.

Implémentation C++

C'est à propos des fonctions virtuelles. Examinons maintenant un programme pour comprendre la liaison dynamique en C++ :

Programme #1 :

Nous voyons deux classes : - La classe A est la classe "de base", tandis que la classe B est la "classe dérivée". A l'intérieur des deux classes, il y a une fonction avec le même nom 'display'. Dans la classe parent, il existe une autre fonction nommée final_print() appelant la fonction display(). Dans la fonction main(), nous créons deux objets différents pour deux classes différentes, en appelant la même fonction display().

Voyons la sortie du programme ci-dessus.

Sortie pour le programme #1 :

Comme prévu, la sortie exécute deux fois la fonction display() de la classe de base telle qu'elle est définie au moment de la compilation (liaison statique). Mais ce n'est pas la sortie que nous voulions.

Maintenant, pour convertir le code ci-dessus en un code de liaison dynamique, nous devons utiliser des fonctions virtuelles. Voyons comment faire cela.

Programme #2 :

Nous ajoutons simplement le mot-clé 'virtual' pour nos deux fonctions display() dans la classe A et la classe B, ce qui en fait des fonctions virtuelles. C'est le seul changement nécessaire. Comme précédemment, nous appelons la même fonction final_print() en utilisant deux objets différents. Voyons quelle sortie nous obtenons maintenant.

Sortie pour le programme #2 :

C'est la sortie que nous voulions, et nous l'avons obtenue en utilisant la liaison dynamique des fonctions.

Apprenez des cours de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.

Conclusion

Dans cet article, nous avons abordé le concept de liaison dynamique en C++ . Pour résumer, la liaison dynamique nous permet une flexibilité en appelant une seule fonction pour gérer différents objets. Comme il ressort de notre code, nous avons appelé la même fonction display() en créant deux objets différents pour nous donner deux sorties différentes. Cela est possible car la liaison dynamique se produit au moment de l'exécution, contrairement à la liaison statique qui se produit au moment de la compilation.

Si vous souhaitez en savoir plus sur le développement full-stack, consultez le programme Executive PG de upGrad & IIIT-B en développement logiciel full-stack, conçu pour les professionnels en activité et offrant plus de 500 heures de formation rigoureuse, plus de 9 projets et affectations. , statut d'anciens élèves de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.

Qu'est-ce que le langage de programmation C++ ?

C++ est un langage de programmation à usage général. C'est l'un des langages de programmation les plus utilisés au monde. C++ est une version améliorée du langage C et fournit des fonctionnalités qui facilitent la programmation orientée objet. C ++ est un langage de programmation à usage général tandis que C est un langage de programmation à usage spécial. C ++ a été créé comme une extension de C pour prendre en charge la programmation orientée objet et est utilisé pour développer des applications de bureau, des applications pour appareils mobiles, des systèmes embarqués et en temps réel, ainsi que des applications et des services Web. C++ est un langage de programmation impératif, procédural, multi-paradigme, compilé et polyvalent. Il prend en charge la programmation structurée, la programmation orientée objet et la programmation générique. Il dispose d'un système de type dynamique et d'une gestion mémoire explicite.

Qu'est-ce que la programmation orientée objet ?

La POO est le moyen de créer du code réutilisable, facile à entretenir et lisible. En bref, la POO est un paradigme de programmation basé sur la conception du logiciel autour des objets du monde réel. Par exemple, en Java, si vous souhaitez concevoir un logiciel qui traite des livres, vous créez une classe appelée Book, puis créez des instances distinctes (objets) de cette classe représentant un seul livre. Il en va de même pour les autres classes que vous devez créer dans le logiciel.

Qu'est-ce que la liaison dynamique en C++ ?

La liaison dynamique associe la signification d'un identificateur dans un texte de programme à la définition de cet identificateur trouvé au moment de l'exécution. Cette association de sens est appelée liaison. C'est le principe fondamental de la programmation orientée objet. Les identificateurs liés dynamiquement sont les branches et les feuilles de la hiérarchie de classes orientée objet. Ils sont dynamiques car ils sont résolus au moment de l'exécution, pas au moment de la compilation. Les branches et les feuilles de la hiérarchie de classes orientée objet sont dynamiques car elles sont liées aux classes qui en sont dérivées.