Maison  >  Article  >  développement back-end  >  La différence entre la référence de valeur du côté gauche et le paramètre de référence de valeur du côté droit de la fonction C++

La différence entre la référence de valeur du côté gauche et le paramètre de référence de valeur du côté droit de la fonction C++

WBOY
WBOYoriginal
2024-04-19 21:57:01741parcourir

La différence entre les paramètres de référence de valeur de gauche et de droite en C++ est la suivante : La référence de valeur de gauche (&) pointe vers un objet existant et est utilisée pour modifier son état. La référence de valeur de droite (&&) pointe vers un objet temporaire utilisé pour obtenir ou transmettre ses données.

C++ 函数左侧值引用和右侧值引用参数的区别

La différence entre la référence de valeur de gauche et le paramètre de référence de valeur de droite dans la fonction C++

Arrière-plan
La référence en C++ est un alias pour une variable, permettant un accès direct à la mémoire du sous-jacent objet. Comprendre la différence entre les références de valeur de gauche et les références de valeur de droite est essentiel pour utiliser efficacement les références C++.

Référence de valeur du côté gauche
La référence de valeur du côté gauche (&) est utilisée comme type utilisé comme référence à un objet existant. Ils servent à modifier l'état de l'objet d'origine.

Syntaxe :

int& lvalue_ref = variable;

Référence de valeur du côté droit
Référence de valeur du côté droit (&&) Le type utilisé comme référence à un objet temporaire (qui n'existe que dans une expression). Ils sont utilisés pour obtenir des données d'objets temporaires ou les transmettre à d'autres fonctions.

Syntaxe :

int&& rvalue_ref = std::move(temporary_object);

Cas pratique

Exemple 1 : Échanger deux nombres

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}

Dans cet exemple, la fonction swap() accepte deux références de valeur de gauche comme paramètres. Cela permet de modifier directement les valeurs originales de a et b. swap() 函数接受两个左侧值引用作为参数。这允许直接修改 ab 的原始值。

示例 2:将临时对象传递给函数

void print_value(int&& rvalue) {
  std::cout << "Value: " << rvalue << std::endl;
}

int main() {
  print_value(42);  // Temporary object created and passed as rvalue reference
  return 0;
}

在这个例子中,print_value()

Exemple 2 : Passer un objet temporaire à une fonctionrrreee

Dans cet exemple, la fonction print_value() accepte une référence de valeur de droite comme paramètre. Cela permet à la valeur entrante d'être lue directement à partir de l'objet temporaire (42).
  • Remarque :
  • La référence de valeur de gauche modifie l'objet d'origine, tandis que la référence de valeur de droite obtient la valeur de l'objet temporaire.
🎜La référence de valeur de droite ne peut pas être liée à un objet existant, mais la référence de valeur de gauche le peut. 🎜🎜L'abus des références de valeur du côté droit peut entraîner des erreurs de persistance car les objets temporaires sont détruits après utilisation. 🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn