Operator

+= 와 + 일관성 설계

상태를 바꾸는 로직은 +=에 모으고, +는 복사본을 만든 뒤 +=를 재사용하면 두 연산의 의미가 어긋나지 않는다.

연산자 오버로드 역할 분리

single source

+=

왼쪽 객체 자신의 상태를 바꾸고 *this 참조를 반환한다.

복사본 생성

+는 원본을 건드리지 않도록 왼쪽 값을 복사한다.

로직 재사용

복사본에 +=를 적용해 검증된 변경 규칙을 그대로 쓴다.

값 반환

계산이 끝난 새 객체를 값으로 반환해 표현식에 맞춘다.

lhs 복사 copy += rhs copy 반환 원본 보존
연산 일관성

두 연산자를 따로 구현하면 경계 조건이 갈라지기 쉽다. 한쪽을 기준 구현으로 두는 편이 유지보수에 유리하다.