다음을 통해 공유


참조 형식 함수 반환

참조 형식을 반환하도록 함수를 선언할 수 있습니다. 이렇게 선언하는 데에는 다음과 같은 두 가지 이유가 있습니다.

  • 반환되는 정보가 충분히 큰 개체여서 복사본 대신 참조를 반환하는 것이 더 효율적입니다.

  • 함수의 형식이 l-value여야 합니다.

참조를 통해 큰 개체를 함수 전달하는 것이 더 효율적일 수도 있고 참조를 통해 큰 개체를 함수에서 반환하는 것이 더 효율적일 수도 있습니다. 참조 반환 프로토콜을 사용하면 반환하기 전에 개체를 임시 위치로 복사할 필요가 없어집니다.

함수가 l-value로 계산되어야 하는 경우에도 참조 반환 형식이 유용할 수 있습니다. 대부분의 오버로드된 연산자, 특히 대입 연산자가 이 범주에 속합니다. 오버로드된 연산자는 오버로드된 연산자에서 다룹니다.

예제

Point 예제를 참조하십시오.

// refType_function_returns.cpp
// compile with: /EHsc

#include <iostream>
using namespace std;

class Point
{
public:
// Define "accessor" functions as
//  reference types.
unsigned& x();
unsigned& y();
private:
unsigned obj_x;
unsigned obj_y;
};

unsigned& Point :: x()
{
return obj_x;
}
unsigned& Point :: y()
{
return obj_y;
}

int main()
{
Point ThePoint;
// Use x() and y() as l-values.
ThePoint.x() = 7;
ThePoint.y() = 9;

// Use x() and y() as r-values.
cout << "x = " << ThePoint.x() << "\n"
<< "y = " << ThePoint.y() << "\n";
}

Output

x = 7
y = 9

x 및 y 함수가 참조 형식을 반환하는 것으로 선언된 것을 볼 수 있습니다. 대입 문의 양쪽에 이러한 함수를 사용할 수 있습니다.

참조 형식의 선언에는 다음 경우를 제외하고 이니셜라이저를 포함해야 합니다.

  • 명시적 extern 선언

  • 클래스 멤버의 선언

  • 클래스 내의 선언

  • 함수의 인수 또는 함수의 반환 형식 선언

참고 항목

참조

참조 (C++)