본문 바로가기
Develop/C++

[C ++] r-value 참조

by J-rain 2023. 2. 20.

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

댓글