Comment implémenter un appel par référence en C ++



Cet article vous fournira une connaissance détaillée de l'appel par référence en C ++ avec implémentations et de ses différences avec l'appel par valeur.

Travailler avec C ++ n’est pas une tâche difficile si vous avez déjà une expérience en C car les deux partagent des tonnes de concepts. Mais, C ++ a quelques concepts qui ne font pas partie du paradigme C. Dans cet article Appel par référence en C ++, nous parlerons d'un de ces concepts, à savoir les variables de référence et ses applications dans l'ordre suivant:

Variables de référence

C ++ nous donne un nouveau type de variable, c'est-à-dire une variable de référence. Nous pouvons considérer une variable de référence comme un surnom pour notre variable d'origine. C’est la fonctionnalité exacte d’une variable de référence sur une seule ligne.





Par exemple, si votre nom est Harrison mais à la maison, les membres de votre famille vous appellent Harry. Passons maintenant à quelques détails des variables de référence. La déclaration et l'utilisation de ce type de variable sont différentes des variables habituelles que nous utilisons mais très similaires aux variables pointeurs.

Syntaxe:



int Hello = 1 int * ptr int & World = Hello

Lorsque nous créons une variable «Bonjour» contenant la valeur «1», un segment de mémoire est utilisé pour endommager la valeur «1» le nom de ce segment sera «Bonjour» et l’adresse de ce segment sera une valeur hexadécimale par exemple0x64. quand on écritint& Monde = BonjourLa variable «World» est créée qui pointe vers le même emplacement mémoire.

Y compris la ligne World ++ apportera des modifications à l'adresse 0x64, cela signifie que la valeur de la variable «Hello» changera également. Certains pourraient souligner que comment sont variables de référence différentes des variables de pointeur dont nous parlerons dans la dernière partie de cet article.

Appel par valeur et appel par référence en C ++

Appel par valeur: L'appel par valeur est une méthode largement utilisée. La plupart du temps, vous utiliserez l'approche appel par valeur, car vous ne souhaitez pas que vos valeurs d'origine des variables soient modifiées. Nous avons donc utilisé la méthode d'appel par valeur pour appeler une fonction, seules les valeurs des variables sont passées. Ceci est réalisé en créant des variables factices en mémoire.



#include en utilisant l'espace de noms std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<  Appel par valeur en C ++

À partir de l'image ci-dessus, nous pouvons voir que dès que nous appelons la fonction add (), les valeurs des variables x et y sont copiées dans les variables a et b. A et b sont des variables fictives.

Appel par référence: Parlons maintenant de la méthode d’appel par référence. Dans cette méthode, des variables factices séparées ne sont pas créées, une référence d'une variable déjà existante est transmise à la méthode. Cette référence pointe vers le même emplacement mémoire, par conséquent des copies séparées ne sont pas effectuées dans la mémoire. Le point important à noter ici est que les modifications apportées aux variables de référence sont reflétées dans la variable fictive.

#include en utilisant l'espace de noms std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< 

Retour par référence en C ++

La façon dont nous pouvons passer des références à une fonction, nous pouvons également renvoyer une référence à partir d'une fonction.

int & min (int & a, int & b) {if (a 

Comme nous pouvons le voir, la fonction ci-dessus est différente des fonctions normales puisque le type de retour est «int &». Cette fonction renvoie une référence à a ou b selon la condition. Le point important à noter ici est que les valeursne sont pas retournés.

Si nous appelons la fonction min (x, y) = 10. 10 sera assigné à x s'il est minimum ou à y si y est minimum.

Appel par référence vs pointeur

Dans tous nos exemples, nous avons vu que nous avons toujours attribué une valeur à la variable de référence que nous avons créée car les variables de référence ne peuvent pas être NULL tandis que les variables de pointeur peuvent être NULL et peuvent provoquer des erreurs inattendues.

Les variables de référence ne peuvent pas être réaffectées tandis que les variables de pointeur peuvent pointer vers une autre variable plus tard dans le programme.

Une variable pointeur contient la valeur d'adresse d'une variable particulière tandis que l'adresse de la variable de référence est la même que celle de la variable à laquelle elle fait référence.

Avec cela, nous arrivons à la fin de cet article Appel par référence en C ++. J'espère que vous avez compris les différentes implémentations de l'appel par valeur et référence et en quoi elles diffèrent toutes les deux.

Si vous souhaitez en savoir plus, consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance. Le cours de formation et de certification Java J2EE et SOA d'Edureka est conçu pour vous former aux concepts Java de base et avancés ainsi qu'à divers frameworks Java tels que Hibernate et Spring.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce blog et nous vous répondrons dans les plus brefs délais.