2017-09-27 21 views
0

그래서 C++에서 다음과 같은 우리가 쓰기 가정 a=b=5;을 우리가 내가 5 리터럴 것을 알고 따라서는 R-값이 a=5;이있는 경우 기본적으로 a=(b=5);R & L 값은 컨텍스트와 관련이 있습니까?

을 의미한다. a은 L 값입니다. 동일은 우리가 각각 a=b=5; 쓰기 a=(b=5);

내가 지금 다음과 같은 말을 할 수 있다면, 무슨 일이 지금 궁금하네요 b=5;

에 간다?

a의 경우, b=5은 R 값이고 a은 L 값입니다. 또한 b은 L 값이고 5은 R 값입니다.

a의 R 값은 무엇입니까?

답변

4

이것은 다릅니다. operator=에 내장 된 값은 좌변 값 참조를 왼쪽에 반환합니다. 그래서 abint 년대가있는 경우, 다음 (b = 5)는 좌변 식이고 당신은 ab 모두있는 lvalues ​​및 5가 prvalue 인 상태 a에 그 좌변을 할당합니다.

대부분 오버로드 된 참조 에 대해서도 마찬가지입니다. 대부분의 사람들은 왼쪽 값 참조를 반환하지만 반드시 그런 것은 아닙니다.

왼쪽 값을 rvalue로 변환하려면 std::move을 사용하십시오.