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의 참조자를 반환하도록 만드세요.
'0x0001 > Effective C++' 카테고리의 다른 글
[Effective C++] 항목 12 : 객체의 모든 부분을 빠짐없이 복사하자 (0) | 2019.02.12 |
---|---|
[Effective C++] 항목 11 : operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자 (0) | 2019.02.12 |
[Effective C++] 항목 9 : 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2019.02.10 |
[Effective C++] 항목 8 : 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2019.02.10 |
[Effective C++] 항목 7 : 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2019.02.10 |