다음을 통해 공유


함수 호출 결과

함수에 대 한 참조 형식으로 선언 하지 않은 함수 호출 된 r-value를 평가 합니다.함수 반환 형식에 대 한 참조를 l 값을 평가 하 고 같이 할당 문의 왼쪽에 사용 될 수 있습니다.

// expre_Function_Call_Results.cpp
// compile with: /EHsc
#include <iostream>
class Point
{
public:
    // Define "accessor" functions as
    // reference types.
    unsigned& x() { return _x; }
    unsigned& y() { return _y; }
private:
    unsigned _x;
    unsigned _y;
};

using namespace std;
int main()
{
    Point ThePoint;

    ThePoint.x() = 7;           // Use x() as an l-value.
    unsigned y = ThePoint.y();  // Use y() as an r-value.

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

앞의 코드 라는 클래스를 정의 합니다. Point, 개인 데이터 포함을 나타내는 개체를 xy 좌표입니다.이러한 데이터 개체를 수정 해야 하 고 해당 값을 검색 합니다.이 프로그램이 이러한 클래스에 대 한 다양 한 설계 중 하나일 뿐입니다. 사용 하는 GetX 및 SetX 또는 GetY 및 SetY 함수는 다른 가능한 디자인.

작동 하는 클래스를 반환 형식, 클래스 형식에 대 한 포인터 또는 참조 클래스 형식 멤버 선택 연산자를 왼쪽 피연산자로 사용할 수 있습니다.따라서 다음 코드는 불법입니다.

// expre_Function_Results2.cpp
class A {
public:
   A() {}
   A(int i) {}
   int SetA( int i ) {
      return (I = i);
   }

   int GetA() {
      return I;
   }

private:
   int I;
};

A func1() {
   A a = 0;
   return a;
}

A* func2() {
   A *a = new A();
   return a;
}

A& func3() {
   A *a = new A();
   A &b = *a;
   return b;
}

int main() {
   int iResult = func1().GetA();
   func2()->SetA( 3 );
   func3().SetA( 7 );
}

함수를 재귀적으로 호출할 수 있습니다.함수 선언에 대 한 자세한 내용은 참조 하십시오. 함수 지정자멤버 함수.관련 재료인 프로그램 및 링크.

참고 항목

참조

후 위 식