책 정리/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의 참조자를 반환하도록 만든다.