Doppeltes Ampersand in C++
In diesem Handbuch wird das doppelte kaufmännische Und-Zeichen in C++ erläutert. Es ist eigentlich in den Konzepten von C++11 enthalten.
Möglicherweise haben Sie beim Deklarieren von Variablen doppeltes kaufmännisches Und (&&
) gesehen. Um jeden Aspekt dieses Konzepts zu verstehen, müssen wir einige der Grundlagen von C++ verstehen.
Doppeltes Ampersand in C++
Um das doppelte kaufmännische Und (&&
) zu verstehen, müssen wir lvalues
und rvalues
in C++ kennen. Lassen Sie uns diese Begriffe in den folgenden Unterabschnitten verstehen.
der lvalue
in C++
Der lvalue
wird als Objekt oder Variable betrachtet, die identifizierbaren Platz im Hauptspeicher oder RAM belegen kann. Sehen Sie sich zum Beispiel den folgenden Code an.
int number = 10;
number
wird im obigen Code als lvalue
betrachtet. Wir erhalten seinen Standort/Adresse, indem wir ihn zu einem Zeiger machen.
// this is pointer to varible
int *ptr_Number = &number;
// here we'll get the address of variable in memory;
cout << ptr_Number << endl;
// object example
der rvalue
in C++
Der rvalue
ist ein Objekt oder eine Variable, die keinen identifizierbaren Platz im Speicher hat. Es wird auch als temporärer Wert betrachtet.
Sehen Sie sich den folgenden Code an.
int number = 10;
number
ist im obigen Code ein lvalue
, aber 10
ist ein rvalue
. Wenn wir versuchen, die Adresse mit der Ziffer 10
zu erhalten, erhalten wir eine Fehlermeldung.
// int *ptr_10 = &10;
//(error) expression must be an lvalue
In C++11 bezieht sich das doppelte kaufmännische Und-Zeichen auf den rvalue
. Betrachten wir nun zwei Methoden.
Eines mit einem einzelnen kaufmännischen Und-Zeichen und ein anderes mit dem doppelten kaufmännischen Und.
Wenn Sie versuchen, den lvalue
an die Funktion zu übergeben, erhalten Sie eine Fehlermeldung. Im Grunde besteht der Hauptzweck des doppelten kaufmännischen Und darin, sich auf rvalue
zu beziehen.
// single ampersand sign is used to refer lvalue
int add(int &a, int &b) { return a + b; }
// double ampersand sign is used to refer rvalue
int add_(int &&a, int &&b) { return a + b; }
int main() {
// here we pass lvalue to the function
int num1 = 10;
int num2 = 30;
int sum = add(num1, num2);
cout << sum << endl;
// it will give the error if we pass the rvalues to that function
// int sum_1= add(10,30);
//(error) initial value of reference to non-const must be an lvalue
// c++11 provides the facility of passing rvalues by using double ampersand
// sign
int sum_1 = add_(10, 30);
cout << endl;
}
Haider specializes in technical writing. He has a solid background in computer science that allows him to create engaging, original, and compelling technical tutorials. In his free time, he enjoys adding new skills to his repertoire and watching Netflix.
LinkedIn