본문 바로가기
프로그래밍 언어/C++

[C++] rvalue reference

by 까망 하르방 2025. 1. 27.
반응형

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++] 레퍼런스 Reference

 

[C++] 레퍼런스 Reference

레퍼런스 (reference, 참조)이미 존재하는 변수에 추가적인 별칭 부여#include int main(){ int n = 10; int& r = n; r = 20; // 값 변경 std::cout   C 언어에서는 void swap(int* p1, int* p2) 와 같이call by pointer 방식을 사

zoosso.tistory.com

반응형

댓글