언어 자료구조 알고리즘/Escort C++

[C++] 증감 연산자 중복 정의

언제나휴일 2016. 4. 15. 15:13
반응형

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]


7장 산자 의 Part1

7장 산자 의 Part2

(모든 동영상 강의는 무료입니다.)

반응형