프로그래밍 언어/C & C++ 정리

L-value, R-value

뽀또치즈맛 2024. 4. 11. 15:38

 

 

 

 

L-value와 R-value는 copy, move와 관련이 있다.

 

주소값을 가지고 있는 친구는 L-value이다.

즉 L-value는 callable한 변수, R-value는 한번 쓰고 다시 안쓰는 변수를 말한다.

 

int a = 3;

a = b;

 

 

여기서 a,b는 L-value, 3은 R-value라고 생각하면 편하다.

 

 

좌측값 참조자는 &, 우측값 참조자는 &&이다.

 

한번쓰고 버려질 것이면 copy보단, move가 적절하게 사용할 것이고,

callable한 것은 copy가 더 적절할 것이다.

 

이를 vector를 예시로 하게된다면

 

void push_back (const T& value);
void push_back (T&& value);

 

 

좌측값 참조를 사용하게 된다면, stack에 가리키는 주소의 메모리가 잡히고

힙 영역에 해당 변수가 생기게 된다.

 

 

vec.push_back(a);
vec.push_back("def");

 

 

각각의 경우는 순서대로 좌측값 참조자 함수, 우측값 참조자를 사용하는 함수이다.