Double esperluette en C++

Haider Ali 12 octobre 2023
Double esperluette en C++

Ce guide traitera du signe double esperluette en C++. C’est en fait dans les concepts de C++11.

Vous avez peut-être vu une double esperluette (&&) lors de la déclaration de variables. Pour comprendre tous les aspects de ce concept, nous devons comprendre certaines des bases de C++.

Double esperluette en C++

Pour comprendre l’esperluette double (&&), nous devons connaître lvalues et rvalues en C++. Nous allons comprendre ces termes dans les sous-sections suivantes.

La lvalue en C++

La lvalue est considérée comme un objet ou une variable pouvant occuper un espace identifiable dans la mémoire principale ou RAM. Par exemple, jetez un oeil au code suivant.

int number = 10;

number est considéré comme une lvalue dans le code ci-dessus. Nous obtenons son emplacement/adresse en en faisant un pointeur.

// 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

Le rvalue en C++

La rvalue est un objet ou une variable qui n’a pas d’espace identifiable en mémoire. Il est également considéré comme une valeur temporaire.

Jetez un oeil au code suivant.

int number = 10;

number est une lvalue dans le code ci-dessus, mais 10 est une rvalue. Si nous essayons d’obtenir l’adresse du chiffre 10, nous obtiendrons une erreur.

// int *ptr_10 = &10;
//(error) expression must be an lvalue

En C++11, le signe double esperluette fait référence à la rvalue. Considérons maintenant deux méthodes.

Un avec une esperluette simple et un autre avec une double esperluette.

Si vous essayez de passer la lvalue à la fonction, vous obtiendrez une erreur. Donc, fondamentalement, le but principal de la double esperluette est de faire référence aux rvalues.

// 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;
}
Auteur: 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

Article connexe - C++ Reference