피연산자가 두 개인 이항 연산자와 피연산자가 한 개인 단항 연산자의 가장 큰 차이점은 피연산자의 개수이다.

그리고 이에 따른 연산자 오버로딩의 차이점은 매개변수의 개수에서 발견된다.


증가, 감소 연산자의 오버로딩



# this는 객체자신의 포인터 값을 의미하므로, *this는 객체 자신을 의미한다.


# ++(++pos); 는 소괄호 부분이 먼저 다음의 형태로 해석된다.

=> ++(pos.operator++()); 그 다음에 반환이 참조 값이므로 다음의 형태가 된다.

=> (pos의 참조 값).operator++();

# 그런데 pos의 참조 값을 대상으로 하는 연산은 pos 객체를 대상으로 하는 연산이기 때문에 결과적으로 위의 문장이 실행되면서 pos 객체의 멤버변수 값은 다시 1씩 증가한다.


# 정리하면, 위 예제의 operator++ 함수에서 객체 자신을 참조할 수 있는 참조 값을 반환하는 이유는 일반적인 ++ 연산자와 같은 형태의 연산이 가능하게 하기 위함이다.




Posted by scii
: