Effective/Effective C++
[EC++] 10. 대입 연산자는 *this의 참조자를 반환하게 하자
seeyoun
2024. 11. 17. 17:29
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;
}
};
- = 뿐만 아니라 +=, -=, *= 등에도 동일한 규약이 적용된다.