임시 객체
int a(10), b(5), c = a + b;
각각 a, b, c 인스턴스가 있다. 그 중 c 인스턴스는 a 와 b를 더한 값이다.
a와 b를 더하는 과정에서 생성되는 인스턴스(값)는 c에 대입된 후 증발될 것이다.
즉, 임시 객체는 이름을 갖지 않으며 본인의 역할을 다 한 뒤 소멸된다.
r-value 참조
a + b는 c라는 l-value에 할당되는 r-value라고 할 수 있다.
즉 임시객체는 r-value이다.
r-value는 자신의 역할을 다 하면 소멸되지만, 굳이 r-value에 참조를 걸어 변수로 만들어 줄 수도 있다.
선언하는 방법은 자료형&& 식별자 = 임시객체 이다.
#include <iostream>
int testFunc(int param)
{
int result = param * 2;
return result;
}
int main()
{
int input = 0;
std::cout << "input number : " << std::endl;
std::cin >> input;
// input + 5에서 생긴 임시 결과에 r-value 참조를 건다.
int&& rData = input + 5;
std::cout << rData << std::endl;
// 임시 결과인 함수의 반환값에 r-value 참조를 건다.
int&& result = testFunc(15);
std::cout << result << std::endl;
return 0;
}
int의 덧셈식(표현식)이나 함수의 반환값은 어떤 값에 할당하지 않으면 증발하게 되는 임시 객체이다.
이 임시 객체에 이름을 붙여 재사용할 수 있도록 만드는 것이 r-value 참조이다.
'C, C++' 카테고리의 다른 글
C++) 함수 다중 정의(Overloading) (0) | 2024.01.20 |
---|---|
C++) 범위 기반 for문 (0) | 2024.01.19 |
C++) 참조형 (변하지 않는 포인터) (0) | 2024.01.18 |
C++) 메모리 동적 할당 (0) | 2024.01.17 |
C++) 변수 선언 및 정의 (0) | 2024.01.17 |