반응형
rvalue reference
rvalue 등호(=) 오른쪽에만 올 수 있는 것
lvalue 등호(=) 오른쪽/왼쪽 모두 올 수 있는 것
[예제] lvalue와 rvalue
int main()
{
int v = 0;
v = 100; // ok (v = lavlue)
20 = v; // error (20 = rvalue)
}
[예제] lvalue reference
• lvalue만 가리킬 수 있다.
• rvalue에 사용하면 error
int main()
{
int v = 0;
int& r1 = v; // ok
int& r2 = 100; // error
}
[예제] const lvalue refenece
• lvalue와 rvalue 모두 가리킬 수 있다.
int main()
{
int v = 0;
// const lvalue refenece -> lvalue와 rvalue 모두 가리킬 수 있다.
const int& r1 = v; // ok
const int& r2 = 100; // ok
}
[예제] rvalue refenece
• rvalue 만 가리킬 수 있다.
• C++ 11 추가
• 「&&」 참조 연산자 사용
int main()
{
int v = 0;
int&& r1 = v; // error
int&& r2 = 100; // ok
}
Q) rvalue refenece 언제 활용하는 것일까?
• move semantics
• perfect forwarding
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
[C++] member initializer list (1) | 2025.01.29 |
---|---|
[C++] lower_bound, upper_bound 사용해보기 (1) | 2025.01.27 |
[C++] constexpr 키워드 (2) | 2025.01.26 |
[C++] static_cast 사용 방법 및 필요성 (1) | 2025.01.26 |
[C++] 람다 표현식 lambda expression (2) | 2025.01.25 |
댓글