r-value는 단순 대입 연산자의 오른쪽 항을 말한다. r-value 참조자는 기존 참조자와 달리 &가 두번 붙는다. 따라서 int 자료형에 대한 참조는 int &이지만 int 자료형에 대한 r-value 참조 형식은 int&& 이다.
#include<iostream>
using namespace std;
void Rain(int &Param)
{
cout << "Rain(int &)" << endl;
}
void Rain(int &&Param)
{
cout << "Rain(int &&)" << endl;
}
int main(void)
{
// 3 + 4 연산 결과는 r-value이다.
Rain(3 + 4);
return 0;
}
실행결과
main 함수에서 Rain() 함수를 호출했는데 이때 매개변수가 3 + 4 이다. 따라서 대응 가능한 형식은 int 나 int && 이다.
정리를하자면 다음과 같다.
매개변수 형식 | 실인수 예 | 비고 |
Rain(int) | int x = 3; Rain(x); Rain(3); Rain(3 + 4); |
|
Rain(int &) | int x = 3; Rain(x); |
|
Rain(int &&) | int x = 3; Rain(3): Rain(3 + 4); |
Rain(x)는 불가능 |
함수의 매개변수를 int , int & , int && 중 어느것으로 선택해야 할지 잘 생각해야한다. 물론 이 형식들을 여러 번 적용해 함수를 다중 정의할 수 있지만 '모호성'이 발생할 수 있으므로 주의 해야한다.
'Develop > C++' 카테고리의 다른 글
[C++] cin, getline 함수 (0) | 2023.02.20 |
---|---|
[C ++] 변환 생성자 (0) | 2023.02.04 |
[C ++] 복사 생성자 (0) | 2023.02.04 |
[C ++] 상수형 메소드 (0) | 2023.02.03 |
[C ++] 생성자와 소멸자 (0) | 2023.02.03 |
댓글