대표적인 단항 연산자는 ++ 와 -- 두 가지가 있다.
++temp
이렇게 단항 연산자를 사용하는데,
멤버함수로는
temp.operator++()로 표현이 될 것이고,
전역 함수로는
operator++(temp)가 될 것이다.
전역 함수의 경우는 피연산자가 모두 인자로 전달되므로, 이렇게 해석된다.
그럼 먼저 단항 연산자 오버 로딩의 예시를 보자.
++ 연산자는 멤버 함수에 의한 오버 로딩이고
-- 연산자는 전역 함수에 의한 오버 로딩이다.
그럼 이때까지는 전위 증가를 구현했는데
단항 연산자의 후위 증가는 어떻게 구현을 할까?
구분하는 방법은 간단하다.
++temp는 temp.operator++()
temp++은 temp.operator++(int)
또는 operator++(temp, int)
--temp는 temp.operator--()
temp--은 temp.operator--(int)
또는 operator--(temp, int)
이다. 여기서 int는 단지 후위 연산을 구분해주는 용도만 가진다.
그럼 이제 후위 증가의 예제를 보자.
후위 증가의 효과를 내는 방법은 복사본을 이용하는 것이다.
여기서 27행을 보면 temp라는 복사본을 만드는 것을 확인할 수 있다.
또한 const로 선언하여 값의 변경을 막았다.
그 이후에 멤버의 값을 더하고
30행에서 멤버의 값이 증가하기 이전에 만들어둔 복사본을 반환하고 있는 것을 확인할 수 있다.
즉, 멤버의 값이 증가하기 이전에 만들어둔 복사본 반환하는 것이 후위증가의 효과를 내는 방법이다.
'스터디 > C++' 카테고리의 다른 글
[ C++ ] 배열 클래스와 인덱스 연산자 오버로딩 (0) | 2019.10.11 |
---|---|
[ C++ ] 대입 연산자 오버로딩 (0) | 2019.10.11 |
[ C++ ] 연산자 오버로딩의 교환 법칙 (0) | 2019.10.10 |
[ C++ ] 연산자를 오버로딩할 때 주의 할 점. (0) | 2019.10.10 |
[ C++ ] 연산자 오버로딩 (0) | 2019.10.10 |