프로그래밍 언어/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");
각각의 경우는 순서대로 좌측값 참조자 함수, 우측값 참조자를 사용하는 함수이다.