Heim >Backend-Entwicklung >C++ >Wann verhält sich eine R-Wert-Referenz wie ein L-Wert innerhalb einer Funktion?
Wann verhält sich eine R-Wert-Referenz wie ein L-Wert innerhalb einer Funktion?
Im folgenden Codeausschnitt erhält die Funktion foo eine R-Wert-Referenz Parameter mit dem Namen bar.
void foo(string&&& bar) { string* temp = &bar; cout << *temp << " @:" << temp << endl; }
Dieser Code hat eine Frage aufgeworfen: Wird bar als L-Wert behandelt? innerhalb der Funktion, da die Adresse übernommen werden kann?
Ist bar ein R-Wert oder L-Wert?
Diese Frage wird im Wesentlichen innerhalb der Frage selbst beantwortet. Alles, was einen Namen hat, ist ein L-Wert. Daher wird bar als L-Wert wahrgenommen. Es ist jedoch wichtig zu beachten, dass bar den Typ „rvalue reference to string“ hat.
Um bar als rvalue zu behandeln, muss std::move() darauf angewendet werden .
Warum zwischen L-Wert- und R-Wert-Referenzen unterscheiden?
Diese Unterscheidung wird wichtig, wenn man darüber nachdenkt, was an jeden Referenztyp gebunden werden kann. L-Werte können an L-Wert-Referenzen gebunden werden, während R-Werte an R-Wert-Referenzen gebunden werden (und alles kann an eine L-Wert-Referenz an const gebunden werden).
Mit anderen Worten, ein R-Wert kann nicht an eine L-Wert-Referenz gebunden werden und umgekehrt.
Parameter des R-Wert-Referenztyps
Beim Handel Bei einem Funktionsparameter vom R-Wert-Referenztyp ist es wichtig zu verstehen, was dies für den Wert bedeutet, auf den die Referenz verweist. Eine R-Wert-Referenz gibt an, dass der ihr zugewiesene Wert ein R-Wert ist. Folglich werden seine Ressourcen freigegeben, sobald der Ausdruck abgeschlossen ist, sodass er als R-Wert verwaltet werden kann.
Übergabe von R-Wert-Referenzen
Bei der weiteren Übergabe eines R-Wert-Referenzparameters Es gibt zwei Möglichkeiten:
Fazit
Der Unterschied zwischen L-Wert- und R-Wert-Referenzen liegt nicht in ihrem Verhalten, sobald sie erhalten wurden, sondern vielmehr darin, woran sie gebunden werden können ihnen. Dieses Verständnis ist für den effektiven Umgang und die Verwaltung von Referenzen innerhalb von Funktionen unerlässlich.
Das obige ist der detaillierte Inhalt vonWann verhält sich eine R-Wert-Referenz wie ein L-Wert innerhalb einer Funktion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!