Rückgabereferenz in C++

Ruckgabereferenz In C



C++ bietet die Möglichkeit, einen Wert oder eine Adresse anhand ihrer Referenz und nicht anhand von Zeigern zurückzugeben. Die Verwendung von Referenzen anstelle von Zeigern kann das Lesen und Verwalten eines C++-Programms vereinfachen. In C++ sind Referenzen und Zeiger eng miteinander verbunden. Der Hauptunterschied besteht darin, dass Referenzen zwar lediglich ein alternativer Name, ein „Alias“ für eine andere Variable sind, Zeiger jedoch in Operationen wie dem Hinzufügen von Werten verwendet werden können. Eine Referenz ist ein alternativer Name oder ein Duplikat des ursprünglichen Werts und wird durch das Symbol „&“ gekennzeichnet.

Beispiel 1:

Wir importieren die Header-Datei „iostream“ und nutzen dann den Namespace „std“. Die Header-Dateien werden in C++-Codes importiert, wenn viele Funktionen definiert sind. Dann erstellen wir eine Return-Referenzfunktion, indem wir das „&“-Symbol mit dem Funktionsnamen „returnTheValue“ platzieren.







Hier wird nun die Referenz „Wert“ eingefügt. Darunter drucken wir den Wert und die Adresse mit der Referenz „&value“. Dann platzieren wir die Rückgabereferenz und den „Wert“. Nun wird hier „main()“ aufgerufen und wir initialisieren „n1“ mit dem Wert „44“. Darunter wird „int& n2“ mit dem „returnTheValue(n1)“ initialisiert. Jetzt drucken wir den Wert von „n1“ sowie seine Adresse aus. Dann geben wir den Wert von „n2“ und die Adresse von „n2“ aus, indem wir „cout“ verwenden.



Code 1:



#include
Verwenden des Namensraums std;
int & returnTheValue ( int & Wert )
{
cout << „Wert =“ << Wert << endl
<< „Die Wertadresse ist“
<< & Wert << endl;
zurückkehren Wert;
}
int main ( )
{
du n1 = 44 ;
int & n2 = returnTheValue ( n1 ) ;
cout << 'n1 = ' << n1 << endl
<< „Die Adresse von n1 ist“
<< & n1 << endl;
cout << 'n2 = ' << n2 << endl
<< „Die Adresse von n2 ist“
<< & n2 << endl;
zurückkehren 0 ;
}


Ausgabe:





Hier können wir feststellen, dass eine Referenz nur ein alternativer Name einer anderen Variablen ist, wie im Folgenden gezeigt. Als Wertadresse ändern sich „n1“ und „n2“ nie.



Beispiel 2:

Wir verwenden den Namensraum „std“, nachdem wir die Header-Datei „iostream“ importiert haben. Als nächstes verwenden wir den Funktionsnamen „MyReturnValueFunc“ und das „&“-Symbol, um eine Rückgabereferenzfunktion zu erstellen. Hier wird der Verweis auf die Variable „v1“ platziert. Wir drucken den Wert und die Adresse mit der Referenz „&v1“ darunter aus. Als nächstes fügen wir die „Return-Referenz“ ein, indem wir an dieser Stelle „return“ und „v1“ verwenden. Hier wird „main()“ aufgerufen und „num_1“ mit dem Wert „19“ initialisiert. Die Initialisierung von „int& num_2“ erfolgt mit „MyReturnValueFunc(num_1)“.

Derzeit drucken wir den Wert und die Adresse von „num_1“ und mit „cout“ den Wert und die Adresse von „num_2“. Wir ändern nun den Wert von „num_1“, indem wir die Adresse verwenden, die hier von „MyReturnValueFunc“ zurückgegeben wird. Diese Funktion gibt den alternativen Namen „v1“ zurück, der auch der alternative Name „num_1“ ist. Also ändern wir seinen Wert und setzen ihn auf „91“. Wir weisen „91“ „MyReturnValueFunc(num_1)“ zu, das hier als Alias ​​fungiert. Dann drucken wir den Wert erneut und die Adresse von „num_1“.

Code 2:

#include
Verwenden des Namensraums std;
int & MyReturnValueFunc ( int & v1 )
{
cout << „Der Wert von v1 =“ << v1 << endl
<< „Die Adresse der v1-Variablen lautet“
<< & v1 << endl;
zurückkehren v1;
}
int main ( )
{
int num_1 = 19 ;
int & num_2 = MyReturnValueFunc ( num_1 ) ;
cout << „Der Wert von num_1 =“ << num_1 << endl
<< „Die Adresse von num_1 ist“
<< & num_1 << endl;
cout << „Der Wert von num_2 =“ << num_2 << endl
<< „Die Adresse von num_2 ist“
<< & num_2 << endl;
MyReturnValueFunc ( num_1 ) = 91 ;
cout << „Jetzt ist der Wert von num_1 =“ << num_1 << endl
<< „Die Adresse von num_1 ist“
<< & num_1 << endl;
zurückkehren 0 ;
}


Ausgabe:

Wie im Folgenden gezeigt wird, können wir erkennen, dass eine Referenz lediglich ein alternativer Name für eine andere Variable ist, da die Adresse der Werte „v1“, „num_1“ und „num_2“ konstant blieb:

Beispiel 3:

Die Header-Datei „iostream“ wird importiert und der Namespace „std“ verwendet. Da in den Header-Dateien zahlreiche Funktionen spezifiziert sind, importieren wir diese in die C++-Codes. Hier erstellen wir eine „ReturnRefFun()“-Funktion, in die wir „int& my_ref“ einfügen, die die Referenz zurückgibt. Als Referenzfunktion wird hier „int& ReturnRefFun“ deklariert. Danach erhöhen wir den Wert der Variablen „my_ref“. Darunter fügen wir „return“ ein, was die Referenz von „my_ref“ zurückgibt.

Anschließend wird hier die Methode „main()“ aufgerufen. Dann initialisieren wir die Variable „first_value“ mit „21“. Darunter geben wir die Kopie der Referenz zurück, indem wir „first_value“ in die Funktion „ReturnRefFun“ einfügen und in der Variablen „copied_value“ speichern. Dann drucken wir sowohl den „first_value“ als auch den „copied_value“ aus, indem wir „cout“ verwenden. Darunter erhöhen wir die Variable „copied_value“, indem wir „copied_value++“ platzieren. Dann drucken wir den „copied_value“ aus, nachdem wir ihn erhöht haben, und den „first_value“ mit „cout“. Danach geben wir die Referenz zurück, indem wir die Variable „int& ref_value“ mit „ReturnRefFun(first_value)“ initialisieren.

Danach drucken wir den Wert der „my_ref“-Variablen aus, die wir kopiert haben. Dann drucken wir den Wert der Variablen „first_value“. Darunter erhöhen wir den Wert von „ref_value“, indem wir „ref_value++“ eingeben. Darunter drucken wir den inkrementierten Wert von „ref_value“ und mit Hilfe von „cout“ auch die Variable „first_value“. Wenn der „ref_value“ geändert wird, ändert sich auch der „first_value“.

Code 3:

#include
Verwenden des Namensraums std;
int & ReturnRefFun ( int & meine_ref ) {
my_ref++;
zurückkehren my_ref;
}
int main ( ) {
int erster_wert = einundzwanzig ;
int kopierter_Wert =ReturnRefFun ( erster_wert ) ;
cout << „Der erste Wert ist:“ << erster_wert << endl;
cout << „Der kopierte Wert ist:“ << kopierter_Wert << endl;
kopierter_Wert++;
cout << „Der kopierte_Wert wird erhöht:“ << kopierter_Wert << endl;
cout << „Der erste Wert:“ << erster_wert << endl;
int & ref_value =ReturnRefFun ( erster_wert ) ;
cout << „Der kopierte Referenzwert:“ << ref_value << endl;
cout << „Der erste Wert:“ << erster_wert << endl;
ref_value++;
cout << „Der Referenzwert wird erhöht:“ << ref_value << endl;
cout << „Der erste Wert:“ << erster_wert << endl;
zurückkehren 0 ;
}


Ausgabe:

Hier ist das Ergebnis des vorherigen Codes, bei dem wir die Technik der „Return-Referenz“ verwendet haben. Das Beispiel zeigt den Unterschied zwischen der Rückgabe eines Duplikats der Referenzvariablen und der Rückgabe der Referenzvariablen selbst.

Beispiel 4:

Hier wird „int& rByRef“ als Referenzfunktion deklariert, die die Referenzvariable zurückgibt. Wir übergeben die „int& data“ an diese „int& rByref()“-Funktion. Hier geben wir die Adresse der Variable „data“ aus und verwenden dann die darunter liegende Rückgabereferenz. Nun initialisieren wir die Variable „x_var“, nachdem wir die Methode „main()“ aufgerufen haben. Dann geben wir hier die Adresse von „x_var“ aus, indem wir „&x_var“ in „cout“ einfügen.

Darunter nutzen wir die Referenzvariable, indem wir „rByref(x_var)“ der „int& y_var“ zuweisen. Anschließend geben wir auch die Adresse dieser Referenzvariablen „&y_var“ aus. Darunter kopieren wir die Variable „x_var“ in die Variable „z_var“ und geben auch die Adresse dieser kopierten Variablen aus, die „&z_var“ lautet. Danach rufen wir die Funktion „rByref()“ auf, übergeben die Variable „x_var“ als Parameter darin und weisen dieser Variablen „93“ zu. Wir rendern auch die Adresse der „x_var“ erneut, indem wir die „&x_var“ in den „cout“ einfügen.

Code 4:

#include
Verwenden des Namensraums std;
int & rByref ( int & Daten )
{
cout << „Adresse der Daten:“ << & Daten << endl;
zurückkehren Daten;
}
int main ( )
{
int x_var = 42 ;
cout << „Adresse von x_var:“ << & x_var << endl;
int & y_var = rByref ( x_var ) ;
cout << „Adresse von y_var:“ << & y_var << endl;
int z_var = rByref ( x_var ) ;
cout << „Adresse von z_var:“ << & z_var << endl;
rByref ( x_var ) = 93 ;
cout << „Adresse von x_var:“ << & x_var << endl;
zurückkehren 0 ;
}


Ausgabe:

Das Ergebnis macht deutlich, dass sich die Adresse der geklonten Variablen „z_var“ von allen anderen Speicherorten unterscheidet, auf die die ursprüngliche Variable „x_var“ verweist.

Abschluss

Das Konzept der „Return-Referenz“ wird in diesem Tutorial ausführlich erläutert. Wir haben gelernt, dass die „Rückgabereferenz“ den „Zeigern“ in der C++-Programmierung ähnelt. Wir haben besprochen, dass das „&“-Symbol mit dem Rückgabetyp der Funktion verwendet werden muss, um anzugeben, welche Funktion eine Referenz zurückgibt. In diesem Tutorial haben wir einige Beispiele und deren Ergebnisse veranschaulicht und dieses Konzept verstanden.