2017-09-27 4 views
0

so gehen wir davon aus dem folgend in C++ schreiben: a=b=5; die a=(b=5);Sind R & L-Werte relativ zu ihrem Kontext?

im Grunde bedeutet, wenn wir a=5; haben ich weiß, dass 5 ein wörtliches ist und somit ist es ein R-Wert. a ist ein L-Wert. Das Gleiche gilt für b=5;

Ich frage mich jetzt, was passiert, wenn wir a=b=5; schreiben bzw. a=(b=5);

Kann ich jetzt sagen, das folgende?

Für a ist b=5 ein R-Wert, wobei a ein L-Wert ist. Außerdem ist b ein L-Wert und 5 ist ein R-Wert.

Was ist der R-Wert von a?

Antwort

4

Das hängt davon ab. Der eingebaute operator= gibt einen lvalue Verweis auf die linke Seite der Zuweisung zurück. Also, wenn a und b sind int ‚s dann ist (b = 5) ein L-Wert Ausdruck und Sie, dass L-Wert zu a zuweisen, mit a und b die beide lvalues ​​und 5 ein prvalue zu sein.

Dies ist im Allgemeinen das Gleiche für überladene operator= auch, da die meisten Menschen eine Lvalue-Referenz zurückgeben, aber es muss nicht sein.

Wenn Sie einen Lvalue in einen Rvalue umwandeln möchten, verwenden Sie std::move.

Verwandte Themen