8 / 8 / 2
Регистрация: 14.01.2013
Сообщений: 141
|
|
1 | |
Почему i++ это rvalue, а ++i lvalue?10.03.2013, 12:35. Показов 1598. Ответов 5
Метки нет Все метки)
(
Встречал упоминания что для постинкремента создается временная копия, но дальше не объясняется. Получается, что переменной с преинкрементом можно присвоить значение, потому как возвращается её адрес, а для постинкремента адрес временной копии? Если можно, то лучше покажите реализацию постинкремента и преинкремента.
0
|
|
10.03.2013, 12:35 | |
Ответы с готовыми решениями:
5
C++ expressions - rvalue, glvalue, prvalue, xvalue, lvalue, а также rvalue reference: что есть что? Rvalue и lvalue ссылки Непонятное поведение rvalue/lvalue
|
Неэпический
|
||||||
10.03.2013, 12:45 | 2 | |||||
1
|
8 / 8 / 2
Регистрация: 14.01.2013
Сообщений: 141
|
|
10.03.2013, 13:08 [ТС] | 3 |
Croessmah, Спасибо, принцип понятен. И ещё, в 15 строчке создался объект без имени? Получается, что постинкремент это rvalue, потому что если поставить его слева, то значение присвоится временному объекту, который разрушится после выхода из точки следования?
0
|
~ Эврика! ~
1256 / 1005 / 74
Регистрация: 24.07.2012
Сообщений: 2,002
|
|
10.03.2013, 13:12 | 4 |
Примерно так. Дело именно в том, что копия временная, существует только на время вычисления утверждения, содержащего постинкремент, и не является полноценным объектом (у неё нет имени; к ней нельзя обратиться в другой части утверждения, только непосредственно как к результату постинкремента, но не самостоятельному значению). Тогда как переменная, которую увеличивает преинкремент, таким объектом является. В этом и разница между rvalue и lvalue и причина, по которой результат постинкремента получает характеристику rvalue.
1
|
5498 / 4893 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
10.03.2013, 13:20 | 5 |
При постинкременте: создаётся временна копия переменной, потом значение переменной увеличивается, возвращается сохранённое во временной копии старое значение. При преинкременте: увеличивается значение переменной, возвращается новое значение. Как-то так...
1
|
![]() 5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
|
|
14.03.2013, 14:20 | 6 |
Для данного сабжа важно именно то, что возвращается не значение, а ссылка на оригинальный объект, через которую и можно получить желаемое значение.
1
|
14.03.2013, 14:20 | |
14.03.2013, 14:20 | |
Помогаю со студенческими работами здесь
6
Rvalue, lvalue, xvalue, prvalue, glvalue Семантика перемещения rvalue\lvalue ссылок Нюансы синтаксиса и семантики: что такое rvalue и lvalue? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |