멤버 연산자 함수
원래의 피연산자보다 인수의 개수가 항상 하나 더 적은데 +는 이항 연산자이므로 두 개의 피연산자를 취하지만 멤버 연산자 함수의 인수는 하나만 있으면 됨.
이 함수를 호출하는 객체인 *this가 암시적인 좌변이 되며 나머지 우변이 될 대상만 인수로 전달받음.
나 자신(this)과 연산될 대상이 누구인가만 알면 되는 것.
만약 ++ 단항 연산자를 멤버 연산자 함수로 오버로딩한다면 호출하는 객체 자체가 피연산자가 되므로 인수는 필요 없음. =, (), [], -> 연산자들은 반드시 멤버 연산자 함수로만 만들어야 함.
전역 연산자 함수
전역 연산자 함수는 원래의 피연산자와 같은 수의 인수를 가짐. +연산자가 이항 연산자이므로 operator+ 전역 연산자 함수는 두 개의 인수를 취하고 ++ 연산자는 단항 연산자이므로 operator ++ 전역 연산자 함수는 증가시킬 대상 하나만 인수로 전달받으면 됨. 암시적으로 전달되는 this가 없으므로 좌우변 모두 인수로 전달받아야 함
오버로딩의 대상이 아닌 것들
.(구조체 멤버연산자)
.*(멤버 포인터 연산자)
static_cast
reinterpret_cast
::(범위 연산자)
sizeof
dynamic_cast
new
?:(삼항 조건 연산자)
typeid
cosnt_cast
delete
증감연산자 오버로딩
operator ++ ( ... )
전위연산과 후위연산을 구분할 수 없으므로 후위 연산자 오버로딩 할 때에만 oprator ++ ( int ) 식으로 이용함 ++A는 operator ++ ( void ) 형태를 취함