C++/SmartPointer
2021. 3. 24. 10:35
R-value Reference
R-value
L-value
와 달리 메모리 주소가 저장되지 않는 값을 의미한다.
예제
주소를 가지고 있지 않은 리터럴 값이나 함수의 반환 값 등을 참조할 수 있다.
#include <iostream> using namespace std; void doSomething(int& ref) { cout << "L-value ref\n"; } void doSomething(int&& ref) { cout << "R-value ref\n"; } int getResult() { return 100 * 100; } int main() { int x = 5; int y = getResult(); const int cx = 6; const int cy = getResult(); // L-value References int& lr1 = x; //int& lr2 = cx; //int& lr3 = 5; const int& lr4 = x; const int& lr5 = cx; const int& lr6 = 5;
// R-value references
//int&& rr1 = x;
//int&& rr2 = cx;
int&& rr3 = 5;
int&& rrr = getResult();
cout << rr3 << endl;
rr3 = 10;
cout << rr3 << endl;
//const int&& rr4 = x;
//const int&& rr5 = cx;
const int&& rr6 = 5;
doSomething(x);
doSomething(5);
doSomething(getResult());
}
/* stdout stderr
5
10
L-value ref
R-value ref
R-value ref
*/
```
'C++ > SmartPointer' 카테고리의 다른 글
C++ 순환 의존성 문제 (Circular Dependency Issues) (0) | 2021.03.24 |
---|---|
C++ 이동 생성자와 이동 대입 (Move Constructor and Move Assignment) (0) | 2021.03.24 |
C++ Syntax vs Semantics (0) | 2021.03.24 |
C++ 스마트 포인터 (Smart Pointer) (0) | 2021.03.22 |