본문 바로가기

Effective C++

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

  Effective C++의 이번 항목 내용은 관례(Convention)에 대한 이야기 입니다. C++의 대입연산은 여러 개가 사슬처럼 엮일 수 있는 성질을 갖고 있습니다. 아래와 같이 말입니다.
 대입 연산이 가진 또 하나의 재미있는 특성은 바로 우측 연관(Right-associative) 연산이라는 점입니다. 즉, 위의 대입 연산 사슬은 다음과 같이 분석이 됩니다.
 위 소스코드를 보면, 15가 z에 대입되고, 그 대입 연산의 결과가 y에 대입된후에, y에 대한 대입 연산의 결과가 x에 대입이 됩니다. 이렇게 대입 연산이 사슬처럼 엮일려면 대입 연산자가 좌변 인자에 대한 참조자를 반환하도록 구현되어 있기 때문일 것입니다. 따라서, C++에서의 연산자 재정의를 할 시에 이런 관례를 지켜주는 것이 좋습니다. "좌변 객체의 참조자를 반환하게 만들자"라는 관례는 대입형 연산자 말고 모든 형태의 대입 연산자에서도 지켜져야 할 것입니다. 
 관례라는 것이 굳이 따르지 않아도 되긴 하지만, 표준 라이브러리에 속한 모든 타입에서도 이런 관례를 전부 따르고 있다는 점은 무시 못할 것입니다. 그냥 이것저것 따지지 말고 묻지도 말고 따르면 되는 것입니다.

 * 대입 연산자는 *this의 참조자를 반환하도록 만들자!!