7.2.4 증감 연산자 중복 정의
이번에는 증감 연산자 중복 정의에 대하여 살펴보기로 합시다. 아시는 것처럼 증감 연산자는 단항 연산자이면서 전위에 연산자가 오거나 후위에 연산자가 올 수 있습니다. 그리고 전위에 왔을 때와 후위에 왔을 떄 수행되는 연산의 결과는 내부의 값이 1 증가 혹은 1 감소이지만 연산 결과는 전위에 왔을 떄에는 연산 후의 결과 자체가 오고 후위에 왔을 떄에는 연산을 수행하기 이전의 값이 오게 됩니다.
그런데 증감 연산자를 중복 정의할 때 입력 매개 변수 리스트는 어떻게 결정해야 전위인지 후위인지 컴파일러가 판단할 수 있을까요? C++언어에서 증감 연산자의 후위 연산을 중복 정의할 때에는 피연산자를 int 형식이 추가로 오는 것으로 표현하도록 약속하였습니다.
간단한 예를 통해 살펴보도록 할께요.
Example.cpp |
class MyInt { int val; public: MyInt(int _val=0):val(_val) { } MyInt &operator++() { val++; return (*this); } const MyInt operator++(int) { MyInt re(*this); val++; return re; } operator int()const { return val; } }; #include <iostream> using namespace std; void main() { MyInt mi; mi = 3; cout<<++mi<<endl; cout<<mi<<endl; mi = 3; cout<<mi++<<endl; cout<<mi<<endl; } |
위의 예제 코드를 실행해 보면 [그림 7.10]과 같이 전위 ++ 연산과 후위 ++ 연산이 적절하게 호출됨을 알 수 있습니다.
[그림 7.10]
(모든 동영상 강의는 무료입니다.)
'언어 자료구조 알고리즘 > Escort C++' 카테고리의 다른 글
[C++] 전역 템플릿 함수 (0) | 2016.04.15 |
---|---|
[C++] 8. 구조화 된 예외처리 (0) | 2016.04.15 |
[C++] 함수 개체 실습의 Zone 클래스 구현 예제 코드 (0) | 2016.04.15 |
[C++] 함수 개체 (0) | 2016.04.15 |
[C++] 개체 출력자 (0) | 2016.04.15 |
[C++] 묵시적 형 변환 연산자 중복 정의 (0) | 2016.04.15 |
[C++] 인덱스 연산자 중복 정의 (배열 클래스 정의) (0) | 2016.04.15 |
[C++] 대입 연산자 중복 정의 (0) | 2016.04.15 |
[C++] 클래스에 연산자 중복 정의 (0) | 2016.04.15 |
[C++] 전역 연산자 중복 정의 (0) | 2016.04.15 |