Es gibt ein häufiges Missverständnis bezüglich der Lvalue / rvalue-Begriffe. Sie beziehen sich nicht auf Variablen, sondern auf Ausdrücke. Ein Ausdruck kann entweder einen L-Wert oder einen R-Wert ergeben, und zwar entweder const oder non-const.
Insbesondere in Ihrem Code ist der Ausdruck i
auf der rechten Seite der Definition int j = i;
ein lvalue Ausdruck, kein rvalue. Zum Zweck der Zuweisung gibt es einen lvalue to rvalue-Konvertierung und dann, dass die neu deklarierte Variable zugeordnet ist.
cont-ness ist in den meisten Fällen ein orthogonaler Begriff und bezieht sich darauf, ob Sie das Objekt, mit dem Sie es zu tun haben, mutieren können oder nicht.
%Vor%Andere Beispiele erfordern die Verwendung von benutzerdefinierten Typen:
%Vor%In C ++ können rvalues des eingebauten Typs nicht const oder non-const sein. Es macht einfach keinen Sinn. Es kann jedoch konstante und nicht konstante Werte von Klassentypen geben.
Ein rvalue ist nur der Wert (nicht das Objekt / die Variable). Was würdest du mit "nicht konstantem Wert" verstehen?!
Tags und Links c++