Как lvalue можно преобразовать как rvalue

int x = 8;
int y = x ;

Вот как lvalue может выступать в качестве rvalue? Я знаю, что это глупый вопрос, но я просто хочу прояснить мои концепции относительно rvalue и lvalue.

0

Решение

Через именующий в Rvalue преобразование.

Вы можете использовать именующий почти везде, где Rvalue требуется и неявный именующий в Rvalue преобразование произойдет автоматически.

Неформально это преобразование «оценивает» или «принимает значение» объекта, который именующий относится к. Это не совсем верно во всех случаях; в неоцененных контекстах, таких как операнд sizeofзначение объекта не будет использовано.

ISO / IEC 14882: 2011 4.1 [conv.lval]:

Glvalue (3.10) нефункционального типа, не являющегося массивом T может быть преобразован в prvalue. Если T является неполным типом, программа, которая требует этого преобразования, плохо сформирована. Если объект, на который ссылается glvalue, не является объектом типа T и не является объектом типа, полученного из Tили, если объект не инициализирован, программа, которая требует этого преобразования, имеет неопределенное поведение. Если T это тип, не относящийся к классу, тип prvalue — версия cv-unqualified T, В противном случае тип prvalue T,

3

Другие решения

Lvalue — это любое значение, которое может появиться в левой части назначения. Что-то, что может быть назначено, например, переменная x в этом случае. Rvalues ​​это вещи, которые имеют значение, например, 8 или получить значение x, Вы можете думать о lvalues ​​как о подмножестве значений rvalue, то есть все значения lvalue могут запрашиваться и использоваться как значение rvalue.

2

По вопросам рекламы [email protected]