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");
각각의 경우는 순서대로 좌측값 참조자 함수, 우측값 참조자를 사용하는 함수이다.
'프로그래밍 언어 > C & C++ 정리' 카테고리의 다른 글
C++/WinRT를 통한 동시성 및 비동기 작업 (0) | 2024.05.23 |
---|---|
재귀함수 (1) | 2024.04.19 |
구조체 바이트 패딩 규칙 (0) | 2024.04.11 |
const int *, const int* const, int* const (0) | 2024.04.09 |
다이나믹 캐스트 (0) | 2024.04.04 |