RValue - это вещи, которые не являются управляемыми областями памяти
значения - это выражения, а не «вещи».
rvalues может ссылаться на объекты («управляемые области памяти»).
поэтому литералы, такие как целые числа, считаются значениями RV.
Литералы являются rvalue (не считаются "rvalues) , потому что C ++ определен таким образом .
Являются ли константы R-значениями?
const int x = 0;
На самом деле, x
является переменной типа const int
.
Учитывая приведенное выше определение x
, выражение x
является lvalue.
Теперь временные объекты, созданные компилятором, также являются RValues
Нет, значения - это выражения, не объекты .
даже когда они имеют манипулируемые области памяти. Почему это так?
Это не так.
Потому что они не могут быть изменены "пользователями"? Это причина?
rvalues являются rvalues, потому что язык определяется таким образом.
Итак, область памяти, которой НЕ манипулируют "пользователи", называется RValue?
Нет, rvalue обозначает только выражения, а не вещи, которые существуют во время выполнения, например память.
Значение r иногда может ссылаться на объект, который является «областью памяти», которой может манипулировать пользователь.
область памяти, которой НЕ могут манипулировать "пользователи"
Не ясно, что вы имеете в виду здесь; Вы имеете в виду постоянную память или что-то еще?