Doppeltes Ampersand in C++

Haider Ali 12 Oktober 2023
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;
}
Autor: Haider Ali
Haider Ali avatar Haider Ali avatar

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

Verwandter Artikel - C++ Reference