Effective C++의 이번 항목 내용은 관례(Convention)에 대한 이야기 입니다. C++의 대입연산은 여러 개가 사슬처럼 엮일 수 있는 성질을 갖고 있습니다. 아래와 같이 말입니다.
대입 연산이 가진 또 하나의 재미있는 특성은 바로 우측 연관(Right-associative) 연산이라는 점입니다. 즉, 위의 대입 연산 사슬은 다음과 같이 분석이 됩니다.
위 소스코드를 보면, 15가 z에 대입되고, 그 대입 연산의 결과가 y에 대입된후에, y에 대한 대입 연산의 결과가 x에 대입이 됩니다. 이렇게 대입 연산이 사슬처럼 엮일려면 대입 연산자가 좌변 인자에 대한 참조자를 반환하도록 구현되어 있기 때문일 것입니다. 따라서, C++에서의 연산자 재정의를 할 시에 이런 관례를 지켜주는 것이 좋습니다. "좌변 객체의 참조자를 반환하게 만들자"라는 관례는 대입형 연산자 말고 모든 형태의 대입 연산자에서도 지켜져야 할 것입니다.
* 대입 연산자는 *this의 참조자를 반환하도록 만들자!!
관례라는 것이 굳이 따르지 않아도 되긴 하지만, 표준 라이브러리에 속한 모든 타입에서도 이런 관례를 전부 따르고 있다는 점은 무시 못할 것입니다. 그냥 이것저것 따지지 말고 묻지도 말고 따르면 되는 것입니다.
'Effective C++' 카테고리의 다른 글
항목 12. 객체의 모든 부분을 빠짐없이 복사하자. (0) | 2010.10.07 |
---|---|
항목 11. operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자. (0) | 2010.10.07 |
항목 9. 객체 생성 및 소멸 과정중에는 절대 가상 함수를 호출하지 말자!!! (0) | 2010.10.06 |
항목 8. 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2010.10.05 |
[EC++] 항목 7. 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자. (0) | 2010.10.05 |