2023. 7. 9. 20:22ㆍc,c++/c++ 관련 개념 및 문법
l-value(왼값)와 r-value(오른값)는 C++에서 표현식(expression)을 구성하는 토큰(token) 중 하나로, 변수나 객체, 그리고 리터럴 상수 등이 해당됩니다.
l-value는 메모리에 저장된 데이터에 대한 주소값으로서, 변수, 배열, 구조체 등의 이름, 객체의 멤버 등이 해당됩니다. 쉽게 말해 l-value는 주소값이 존재하며, 해당 주소값을 참조할 수 있는 식별자를 뜻합니다. 예를 들어, "a = b"와 같은 코드에서 "a"와 "b"는 l-value입니다.
r-value는 값을 나타내며, 변수나 객체가 아니라 상수, 리터럴 값, 값에 대한 계산식 등이 해당됩니다. 쉽게 말해, r-value는 주소값이 아니라 값 그 자체를 뜻합니다. 예를 들어, "a = 1 + 2"와 같은 코드에서 "1", "2"는 r-value입니다.
C++에서는 l-value와 r-value의 차이에 따라 대입연산을 수행하기 위해 규칙을 적용합니다. 즉, l-value에 r-value를 대입하거나 함수 인자에 r-value를 전달할 수 없습니다. l-value에 r-value를 대입하려면 대입연산자의 오른쪽에 l-value가 있어야 합니다.
또한, C++11부터 r-value 참조(reference)가 도입되어, r-value를 참조하는 것이 가능해졌습니다. r-value 참조는 "&&"로 표현하며, 이를 사용하여 r-value도 대입이 가능해졌습니다. r-value 참조는 주로 이동 생성자와 이동 대입 연산자에서 유용하게 사용됩니다.
'c,c++ > c++ 관련 개념 및 문법' 카테고리의 다른 글
explicit 키워드, mutable 키워드 (0) | 2023.07.11 |
---|---|
함수 포인터 (0) | 2023.07.09 |
nested class, types.. (0) | 2023.07.09 |
익명 객체 (0) | 2023.07.09 |
static 관련 정리 (0) | 2023.07.09 |