Что такое lvalue to rvalue conversion? В этой статье непонятно следующее:
Очевидно, что если мы будем использовать любое из приведенных ранее lvalue-выражений в контексте, требующем значения объекта (например, в правой части операции присваивания), использование компилятором адресов будет ошибкой. Т.е., хотя выражение i является lvalue ("адрес и значение"), компилятор должен использовать соответствующее rvalue ("значение"). В терминах стандарта C++ это называется преобразованием lvalue к rvalue (lvalue-to-rvalue conversion).
Что этим хотел сказать автор?
Ну примерно...
Смотрите, переменная как таковая является lvalue -
int i;
i = 4;
Здесь de facto используется адрес переменной i
- куда записать значение 4.
int i, j;
i = 4;
j = i;
А что теперь? Теперь в первом присваивании i
выступает как lvalue - т.е. используется как указание на место в памяти, а во втором - уже как rvalue - не как указание на место в памяти, а как значение, в этом месте хранящееся.
Т.е. из lvalue получено rvalue. Т.е. компилятор преобразовал lvalue в rvalue - выполнил lvalue-to-rvalue conversion.
Так более-менее понятно или нужно еще поговорить?..
Все очень просто и нужно внимательно прочитать выше в статье, что написано.
rvalue - это только значение (оно не имеет адреса) lvalue - это нечто, что обладает и значением и адресов.
В случае примера
int j; int i;
j = i;
обе переменные i и j могут быть lvalue (т.е. могут находится слева от оператора присваивания), но в примере от i нам нужно только значение, поэтому lvalue преобразуется в rvalue.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Можно ли писать приложения под Android на c++ с qt в Linux и какие для этого нужны компоненты?
Представление строит свой презентер, презентер получает ссылку на IView и строит свою модельВопрос: где строить подчиненные IView, в презентере...
Начал изучать книгу Эрика и Элизабет Фримен Паттерны проектированияПытаюсь написать на C++ архитектуру из первой главы