R-Wert-Referenzen als L-Werte innerhalb von Funktionen verstehen
Bei der Softwareentwicklung kann das Verständnis des Verhaltens von R-Wert-Referenzen von entscheidender Bedeutung sein, insbesondere bei der Arbeit mit Referenzen in Funktionen. Dieser Artikel befasst sich mit der Frage, ob eine R-Wert-Referenz als L-Wert behandelt wird, wenn sie innerhalb einer Funktion verwendet wird.
Die Frage
Ein Entwickler stellte die folgende Frage:
"Angesichts des folgenden Codeausschnitts ist die Variable 'bar' ein R-Wert oder ein lvalue?
void foo(string&& bar){ string* temp = &bar; cout << *temp << " @:" << temp << endl; }
Die Frage stellt sich, weil bekannt ist, dass man normalerweise nicht die Adresse eines rvalue erhalten kann. Im obigen Code wird jedoch die Adresse der rvalue-Referenz „bar“ erfolgreich abgerufen die Frage nach der Art der Referenz innerhalb der Funktion.“
Die Antwort
1. Unterscheidung zwischen R-Wert und L-Wert:
Der Antwort: Antwort ,„bar“无论其实际类型是什么,都始终是一个lvalue。
2. R-Wert-Referenzen als L-Werte: Referenz。这意味着它最初绑定到一个rWert。
3. Zweck der Unterscheidung von R-Wert- und L-Wert-Referenzen: references可以绑定到rvalues.这意味着rvalue 不能绑定到lvalue references,反之亦然.
4. R-Wert-Referenzen in Funktionsparametern:
当一个函数的参数是r-Wert reference类型时,它表明绑定的值是一个rvalue.这提供了以下好处:
可以安全地将绑定的对象视为rvalue(例如,通过窃取其资源)。
可以通过调用std::move将其声明为rvalue,以便后续传递.Das obige ist der detaillierte Inhalt vonWird eine R-Wert-Referenz als L-Wert innerhalb einer Funktion behandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!