센로그
[EC++] 10. 대입 연산자는 *this의 참조자를 반환하게 하자 본문
C++ 대입 연산은 여러 개가 사슬처럼 엮일 수 있다.
int x, y, z;
x = y = z = 15;
- z에 15가 대입되고, 갱신된 z가 y에 대입되고, 갱신된 y가 x에 대입되는 형태이다.
이것이 가능한 이유는?
- 대입 연산자가 좌변 인자(자기 자신)에 대한 참조자를 반환하도록 구현되어 있기 때문이다.
- 이는 일종의 관례이며, 우리가 커스텀 클래스를 만들 때도 대입 연산자는 이런 식으로 구현하는 것이 좋다.
class Widget {
public:
...
Widget& operator= (const Widget& rhs) {
...
return *this;
}
Widget& operator+= (const Widget& rhs) {
...
return *this;
}
};
- = 뿐만 아니라 +=, -=, *= 등에도 동일한 규약이 적용된다.
'Effective > Effective C++' 카테고리의 다른 글
[EC++] 12. 객체의 모든 부분을 빠짐없이 복사하자 (0) | 2024.11.18 |
---|---|
[EC++] 11. operator=에서는 자기대입에 대한 처리가 빠지지 않도록 하자 (0) | 2024.11.17 |
[EC++] 9. 객체 생성 및 소멸 과정 중에는 절대로 가상 함수를 호출하지 말자 (0) | 2024.11.17 |
[EC++] 8. 예외가 소멸자를 떠나지 못하도록 붙들어 놓자 (0) | 2024.11.16 |
[EC++] 7. 다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 (0) | 2024.11.16 |