5교시

//
리턴값과레퍼런스이야기

 

// 값을리턴하는함수

// 1) bulit in type 의값을리턴( ex. int foo() )

//      => 리턴값은상수취급된다.

// 2) user type의값을리턴( ex. Point foo() )

//      => 임시객체를리턴한다.( 일부컴파일러는임시객체를상수취급하기도한다.)

int x = 10;

 

int& foo()

{

        return x;

}

 

void main()

{

//      int s = foo();        // 값을리턴하면10 = 30의의미를가진다.

        foo() = 30;           // &을리턴하면된다.

                               

 

         cout << x << endl;

}

 

//================================================

// 1. 함수가레퍼런스를리턴하는이유.

//    (1) built in type의레퍼런스( int& foo() )

//             => "함수호출() = "의표현을가능하게하기위해

//             => 함수호출이lvalue에놓이기위해.

 

//    (2) user type의레퍼런스-> 임시객체의생성을막기위해사용.

//             ex) Point& foo()

 

struct Point

{

        int x;

        int y;

};

Point p = { 1, 2 };

 

Point& foo()

{

        return p;

}

 

void main()

{

        foo().x = 10;          // user type의리턴값은상수가아니다.

 

        cout << p.x << endl;

}

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다