책 정리/Effective C++ 3rd

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

ocean20 2019. 12. 18. 09:59

이런 코드를 경험이 있을 것이다.

int x, y, z;
x = y = z = 10;

대입연산자는 right-associative 우측 연관 연산이라는 특성을 가진다.

이는 아래 같다.

x = (y = (z = 10));

우측 z 부터 순서대로 대입이 진행된다.

보통 이러한 연산자는 참조자를 반환하도록 구현되어 있다. 일종의 관례이다.

 

class Widget {
public:
  …
  Widget& operator+=(const Widget& rh)
  {
    …
    return *rh;
  }
}

"좌변객체의 참조자는 반환하게 만들자"라는 관례는 단순 대입형 연산자 아니라, +=, -=, *= 등에도 동일하게 적용한다. 굳이 안따라도 컴파일이 안되진 않는다. 하지만 표준 라이브러리 and 기본 타입이 관례를 따르니 지키도록하자.

 

이것만은 잊지 말자!

  - 대입연산자는 *this 참조자를 반환하도록 만든다.