Returreferanse i C++

Returreferanse I C



C++ gir en mulighet til å returnere en verdi eller en adresse ved hjelp av referansen i stedet for pekere. Å bruke referanser i stedet for pekere kan gjøre et C++-program enklere å lese og administrere. I C++ er referanser og pekere nært knyttet til hverandre. Den primære forskjellen er at selv om referanser bare er et alternativt navn, 'alias' for en annen variabel, kan pekere brukes i operasjoner som å legge til verdier. En referanse er et alternativt navn eller duplikat av den opprinnelige verdien og er merket med «&»-symbolet.

Eksempel 1:

Vi importerer 'iostream'-overskriftsfilen og bruker deretter 'std'-navneområdet. Overskriftsfilene importeres i C++-koder ettersom mange funksjoner er definert. Deretter lager vi en returreferansefunksjon ved å plassere '&'-symbolet med funksjonens navn, 'returnTheValue'.







Her er nå 'verdi'-referansen satt inn. Under denne skriver vi ut verdien og adressen med '&value'-referansen. Deretter plasserer vi returreferansen og plasserer 'verdien'. Nå blir 'main()' påkalt her, og vi initialiserer 'n1' med verdien '44'. Under dette initialiseres 'int& n2' med 'returnTheValue(n1)'. Nå skriver vi ut verdien av 'n1' så vel som adressen. Deretter skriver vi ut verdien av 'n2' så vel som adressen til 'n2' ved å bruke 'cout'.



Kode 1:



#include
bruker navneområde std;
int & returnTheValue ( int & verdi )
{
cout << 'Verdi = ' << verdi << endl
<< 'Verdiadressen er'
<< & verdi << endl;
komme tilbake verdi;
}
int main ( )
{
du n1 = 44 ;
int & n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< ' Adressen til n1 er '
<< & n1 << endl;
cout << 'n2 = ' << n2 << endl
<< ' Adressen til n2 er '
<< & n2 << endl;
komme tilbake 0 ;
}


Produksjon:





Her kan vi merke oss at en referanse bare er et alternativt navn på en annen variabel som vist i det følgende. Som verdiadressen endres aldri 'n1' og 'n2'.



Eksempel 2:

Vi bruker 'std'-navneområdet etter å ha importert 'iostream'-overskriftsfilen. Deretter bruker vi funksjonsnavnet 'MyReturnValueFunc' og '&'-symbolet for å bygge en returreferansefunksjon. Referansen til 'v1'-variabelen er plassert her. Vi skriver ut verdien og adressen med '&v1'-referansen under denne. Deretter setter vi inn 'returreferanse' ved å bruke 'retur' og 'v1' på dette stedet. Her kalles 'main()', og 'num_1' initialiseres med verdien '19'. Initialiseringen av 'int& num_2' gjøres med 'MyReturnValueFunc(num_1)'.

For øyeblikket skriver vi ut verdien og adressen til 'num_1', ​​og ved å bruke 'cout' skriver vi ut verdien og adressen til 'num_2'. Vi endrer nå verdien av 'num_1' ved å bruke adressen som returneres her av 'MyReturnValueFunc'. Denne funksjonen returnerer det alternative navnet til 'v1', som også er det alternative navnet til 'num_1'. Så vi endrer verdien og setter den til '91'. Vi tildeler '91' til 'MyReturnValueFunc(num_1)' som fungerer som alias her. Deretter skriver vi ut verdien på nytt og adressen til 'num_1'.

Kode 2:

#include
bruker navneområde std;
int & MyReturnValueFunc ( int & v1 )
{
cout << 'Verdien av v1 = ' << v1 << endl
<< ' Adressen til v1-variabelen er '
<< & v1 << endl;
komme tilbake v1;
}
int main ( )
{
int num_1 = 19 ;
int & num_2 = MyReturnValueFunc ( num_1 ) ;
cout << 'Verdien av num_1 = ' << num_1 << endl
<< ' Adressen til num_1 er '
<< & num_1 << endl;
cout << 'Verdien av num_2 = ' << num_2 << endl
<< ' Adressen til num_2 er '
<< & num_2 << endl;
MyReturnValueFunc ( num_1 ) = 91 ;
cout << 'Nå, verdien av num_1 = ' << num_1 << endl
<< 'Adressen til num_1 er '
<< & num_1 << endl;
komme tilbake 0 ;
}


Produksjon:

Som demonstrert i det følgende, kan vi se at en referanse bare er et alternativt navn for en annen variabel siden adressen til verdiene 'v1', 'num_1' og 'num_2' forble konstant:

Eksempel 3:

'iostream'-hodefilen importeres og 'std'-navneområdet brukes. Siden mange funksjoner er spesifisert i overskriftsfilene, importerer vi dem til C++-kodene. Her lager vi en 'ReturnRefFun()'-funksjon der vi plasserer 'int& my_ref' som returnerer referansen. 'int& ReturnRefFun' er deklarert her som referansefunksjonen. Etter dette øker vi verdien til 'my_ref'-variabelen. Under dette legger vi 'retur' som returnerer referansen til 'min_ref'.

Etter dette påkalles 'main()'-metoden her. Deretter initialiserer vi 'first_value'-variabelen med '21'. Under dette returnerer vi kopien av referansen ved å plassere «first_value» i «ReturnRefFun»-funksjonen og lagre den i «copied_value»-variabelen. Deretter skriver vi ut både 'first_value' så vel som 'copied_value' ved å bruke 'cout'. Under dette øker vi 'copied_value'-variabelen ved å plassere 'copied_value++'. Deretter skriver vi ut 'copied_value' etter å ha økt den og 'first_value' ved å bruke 'cout'. Etter dette returnerer vi referansen ved hjelp av initialisering av 'int& ref_value'-variabelen med 'ReturnRefFun(first_value)'.

Etter dette skriver vi ut verdien til 'my_ref'-variabelen som vi kopierte. Deretter skriver vi ut verdien av 'first_value'-variabelen. Under dette øker vi verdien til 'ref_value' ved å sette 'ref_value++'. Under dette skriver vi ut den økte verdien av «ref_value» og også «first_value»-variabelen ved hjelp av «cout». Når 'ref_value' endres, vil 'first_value' også endres.

Kode 3:

#include
bruker navneområde std;
int & ReturnRefFun ( int & min_ref ) {
min_ref++;
komme tilbake min_ref;
}
int main ( ) {
int første_verdi = tjueen ;
int kopiert_verdi =ReturRefMoro ( første_verdi ) ;
cout << 'Den første verdien er: ' << første_verdi << endl;
cout << 'Den kopierte verdien er: ' << kopiert_verdi << endl;
kopiert_verdi++;
cout << 'Den kopierte_verdien økes: ' << kopiert_verdi << endl;
cout << 'Den første verdien: ' << første_verdi << endl;
int & ref_verdi =ReturRefMoro ( første_verdi ) ;
cout << 'Referansen kopierte verdi: ' << ref_verdi << endl;
cout << 'Den første verdien: ' << første_verdi << endl;
ref_verdi++;
cout << 'Referanseverdien økes : ' << ref_verdi << endl;
cout << 'Den første verdien: ' << første_verdi << endl;
komme tilbake 0 ;
}


Produksjon:

Her er resultatet av den forrige koden der vi brukte 'returreferanse'-teknikken. Eksemplet viser skillet mellom å returnere et duplikat av referansevariabelen og å returnere selve referansevariabelen.

Eksempel 4:

Her er 'int& rByRef' erklært som referansefunksjonen som returnerer referansevariabelen. Vi sender 'int& data' til denne 'int& rByref()'-funksjonen. Her skriver vi ut adressen til 'data'-variabelen og bruker deretter returreferansen under denne. Nå initialiserer vi 'x_var'-variabelen etter å ha påkalt 'main()'-metoden. Deretter skriver vi ut adressen til 'x_var' her ved å sette '&x_var' i 'cout'.

Under dette bruker vi referansevariabelen ved å tilordne 'rByref(x_var)' til 'int& y_var'. Deretter skriver vi også ut adressen til den '&y_var'-referansevariabelen. Under dette kopierer vi «x_var»-variabelen inn i «z_var»-variabelen og skriver også ut adressen til denne kopierte variabelen som er «&z_var». Etter dette kaller vi «rByref()»-funksjonen, sender «x_var»-variabelen som parameteren i den, og tildeler «93» til denne variabelen. Vi gjengir også adressen til 'x_var' igjen ved å sette '&x_var' i 'cout'.

Kode 4:

#include
bruker navneområde std;
int & rByref ( int & data )
{
cout << 'Adresse til data: ' << & data << endl;
komme tilbake data;
}
int main ( )
{
int x_var = 42 ;
cout << 'Adresse til x_var: ' << & x_var << endl;
int & y_var = rByref ( x_var ) ;
cout << 'Adresse til y_var: ' << & y_var << endl;
int z_var = rByref ( x_var ) ;
cout << 'Adresse til z_var: ' << & z_var << endl;
rByref ( x_var ) = 93 ;
cout << 'Adresse til x_var: ' << & x_var << endl;
komme tilbake 0 ;
}


Produksjon:

Resultatet gjør det klart at adressen til den klonede variabelen, 'z_var', er forskjellig fra alle de andre stedene som den opprinnelige variabelen, 'x_var', refererer til.

Konklusjon

'Returreferanse'-konseptet utforskes i detalj i denne opplæringen. Vi lærte at 'returreferansen' ligner på 'pekerne' i C++-programmering. Vi diskuterte at for å indikere hvilken funksjon som returnerer en referanse, må '&'-symbolet brukes med funksjonens returtype. Vi illustrerte noen eksempler og deres resultater og forsto dette konseptet i denne opplæringen.