operator overload

연산자 오버로딩 기준

operator+, operator=, +=, ++obj, obj++는 문법이 짧은 만큼 반환 타입과 부작용 정책을 분명히 해야 합니다.

operator+

이항 연산자 반환 규칙

Point나 Vector 예제에서 좌표 합의 의미가 드러나야 합니다.

operator+=

복합 대입 반환

+와 +=가 서로 다른 결과를 내면 사용자가 혼란스러워집니다.

operator=

자기 대입과 자원 교체를 안전하게 처리해야 합니다

Rule of Three/Five와 연결되는 가장 민감한 연산자입니다.

++ 전위/후위

전위/후위 반환 관례

더미 int 매개변수로 두 형태를 구분합니다.

const 읽기 연산자는 const 멤버 함수로 두면 임시 객체와 상수 객체에서도 자연스럽습니다.
noexcept 이동과 교환 연산이 예외를 던지지 않으면 컨테이너 최적화에도 유리합니다.
프렌드 operator<<처럼 왼쪽 피연산자가 스트림이면 비멤버 함수 형태가 필요합니다.