대입 연산자는 좌변 객체의 참조자를 반환하게 만들자
대입 연산은 우측에서 좌측으로 연쇄적으로 대입된다는 특성이 있습니다.
int x, y, z;
x = y = z = 15;
이를 보았을 때, 대입 연산이 z = 15, y =15, x = 15 이렇게 사슬같이 연쇄적으로 엮이려면
대입 연산자는 좌변에 대한 참조자를 반환하도록 구현되어 있을 것이라고 예상할 수 있습니다.
그래서 클래스 타입의 대입 연산자를 정의할 때, 이러한 관례를 지키는 것이 좋다고 합니다.
class MyFunc
{
public:
...
// 반환 타입은 현재 클래스에 대한 참조자이다.
MyFunc& operator = (const MyFunc& rhs)
{
...
// 좌변 객체(의 참조자)를 반환한다.
return *this;
}
MyFunc& operator += (const MyFunc& rhs)
{
...
return *this;
}
MyFunc& operator *= (const MyFunc& rhs)
{
...
return *this;
}
...
};
대입과 관련된 연산자 오버로딩은 *this 리턴으로 보셔도 무방할 것 같습니다.
'Effective C++ 정리' 카테고리의 다른 글
12. 객체의 모든 부분을 빠짐없이 복사하기 (0) | 2020.01.05 |
---|---|
11. operator = 자기 대입 처리하기 (0) | 2020.01.04 |
09. 생성자, 소멸자에서 가상 함수를 호출하지 않는다. (0) | 2020.01.04 |
08. 소멸자와 예외 처리 (0) | 2020.01.03 |
07. 다형성을 가진 기본 클래스 소멸자는 반드시 가상 소멸자로 선언하자 (0) | 2019.12.29 |