[C++] 14 L-value, R-value

김진우·2025년 6월 3일

C++

목록 보기
14/16
post-thumbnail

C++에서 모든 표현식은 L-valueR-value로 분류된다.

L-value(Left-value)

표현식의 왼쪽에 오는 값으로, 메모리 주소를 가지는 참조 가능한 객체이다.

R-value(Right-value)

표현식의 오른쪽에 오는 값으로, 메모리 주소가 없는 일시적으로 생성되는 값이다.
대표적으로 숫자, 문자 또는 연산 결과, 함수 반환값 등을 사용한다.

int x = 10; // x : L-value, 10 : R-value
x = 20;     // x : L-value : x, 20 : R-value

L-value를 R-value처럼 사용

만약, 표현식의 오른쪽에 포인터 변수가 들어온다면, 양쪽 모두 참조가 가능하기 때문에 둘다 L-value가 될 것이다. 하지만 변수는 L-value이지만, R-value context를 통해 R-value처럼 사용할 수 있다.

int* a = new int(1);  // a : L-value, new int(1) : R-value
int* b = a; // b, a : L-value이지만, a가 대입의 오른쪽에 있기 때문에 R-value처럼 사용 가능하다.

0개의 댓글