0x0001/Effective C++
[Effective C++] 항목 10 : 대입 연산자는 *this의 참조자를 반환하게 하자
우치하시스이
2019. 2. 11. 23:59
C++의 대입 연산은 여러 개가 사슬처럼 엮일 수 있는 재미있는 성질을 갖고 있습니다.
int x, y, z;
x = y = z = 15;
위의 구현은
일종의 관례이고, 클래스에 대입 연산자가 혹시 들어간다면 이 관례를 지키는 것이 좋습니다.
1 2 3 4 5 6 7 8 9 10 11 12 | class Widget { public: /** * (= 뿐만아니라 +=, -=, *=, /= 등 *this를 반환하도록 만든다.) */ Widget& operator=(const Widget& rhs) { ... return *this; } }; |
이관례는 모든 기본제공 타입들이 따르고 있을뿐만 아니라, 표준 라이브러리에 속한 모든 타입 ( string, vector, complex, tr1::shared_ptr 등) 에서도 따르고 있다는 점을 무시 못할 것입니다.
이것 만은 잊지 말자!
◆ 대입 연산자는 *this의 참조자를 반환하도록 만드세요.