Heim  >  Artikel  >  Backend-Entwicklung  >  Der Unterschied zwischen der Wertreferenz auf der linken Seite und dem Wertreferenzparameter auf der rechten Seite der C++-Funktion

Der Unterschied zwischen der Wertreferenz auf der linken Seite und dem Wertreferenzparameter auf der rechten Seite der C++-Funktion

WBOY
WBOYOriginal
2024-04-19 21:57:01745Durchsuche

Der Unterschied zwischen linken und rechten Wertreferenzparametern in C++ ist wie folgt: Die linke Wertreferenz (&) zeigt auf ein vorhandenes Objekt und wird zum Ändern seines Zustands verwendet. Die rechte Wertreferenz (&&) verweist auf ein temporäres Objekt, das zum Abrufen oder Übergeben seiner Daten verwendet wird.

? Objekt. Für die effektive Nutzung von C++-Referenzen ist es wichtig, den Unterschied zwischen linken und rechten Wertverweisen zu verstehen.

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

Wertreferenz auf der linken Seite

Die Wertreferenz auf der linken Seite (&) wird als Typ verwendet, der als Referenz auf ein vorhandenes Objekt verwendet wird. Sie werden verwendet, um den Zustand des Originalobjekts zu ändern.

Syntax:

int& lvalue_ref = variable;

Wertreferenz auf der rechten Seite

Wertreferenz auf der rechten Seite (&&) Der Typ, der als Referenz auf ein temporäres Objekt verwendet wird (das nur in einem Ausdruck existiert). Sie werden verwendet, um Daten von temporären Objekten abzurufen oder an andere Funktionen zu übergeben.

Syntax:

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

Praktischer Fall


Beispiel 1: Zwei Zahlen vertauschen

void swap(int& a, int& b) {
  int temp = a;
  a = b;
  b = temp;
}
In diesem Beispiel akzeptiert die Funktion swap() zwei linke Wertreferenzen als Parameter. Dies ermöglicht eine direkte Änderung der ursprünglichen Werte von a und b.

Beispiel 2: Übergabe eines temporären Objekts an eine Funktion

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;
}

In diesem Beispiel akzeptiert die Funktion print_value() eine Wertreferenz auf der rechten Seite als Parameter. Dadurch kann der eingehende Wert direkt vom temporären Objekt (42) gelesen werden.

Hinweis:

swap() 函数接受两个左侧值引用作为参数。这允许直接修改 ab 的原始值。

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

rrreee

在这个例子中,print_value()

Die linke Wertreferenz ändert das ursprüngliche Objekt, während die rechte Wertreferenz den Wert des temporären Objekts erhält.

Die rechte Wertreferenz kann nicht an ein vorhandenes Objekt gebunden werden, die linke Wertreferenz jedoch schon.

Der Missbrauch rechtsseitiger Wertreferenzen kann zu Persistenzfehlern führen, da temporäre Objekte nach der Verwendung zerstört werden.

Das obige ist der detaillierte Inhalt vonDer Unterschied zwischen der Wertreferenz auf der linken Seite und dem Wertreferenzparameter auf der rechten Seite der C++-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn