방프리

17.07.07. Effective C++ 2. 생성자, 소멸자 및 대입 연산자 (항목10) 본문

C++/Effective C++

17.07.07. Effective C++ 2. 생성자, 소멸자 및 대입 연산자 (항목10)

방프리 2020. 1. 6. 01:46

항목 10: 대입 연산자는 *this의 참조자를 반환하게 하자

 

C++에서 기본적으로 대입 연산을 우측 연관 연산이라는 것을 이용하여 진행합니다. 

예를 들어 x = y = z = 15; 라는 문장이 있다면 컴파일러는 

x = (y = (z = 15) ) ); 이렇게 해석하게 되죠 

대신 반환하는 것은 좌변 인자에 대한 참조자를 반환하도록 구현되어야 합니다.

일종의 관례 같은 것이죠 

간단한 예를 통해 알아보겠습니다. 

 

class Point

{

private: 

int x, y;

 

public :

Point();

~Point();

 

Point& operator= (Point p)

{

x = p.x;

y = p.y;

 

return *this;

}

};

 

이런 식으로 자기 자신을 반환하도록 합니다.

이번 항목은 꼭 외우고 넘어가도록 합시다.

Comments