반응형

연산자 재정의 활용

  • 전위형(++n), 후위형(n++) 연산자
    • 전위형, 후위형 모두 n.operator++ 연산자 재정의로 구현
    • 전위형은 자신을 참조로 리턴하여 구현
      • Integer& operator++()
    • 후위형은 구분을 위해 인자로 int를 받고 리턴값으로 증감을 반영하지 않기 위해 값으로 리턴
    • 후위형은 내부에서 전위형을 호출(재활용)하여 구현 
      • Integer operator++(int)
class Integer
{
    int value;
public:
    Integer(int n = 0) : value(n) {}

    void print() const
    {
        std::cout << value << std::endl;
    }

    // 전위형 - 값리턴.
    Integer& operator++()
    {
        ++value;
        return *this;
    }

    // 후위형 - 값리턴.
    Integer operator++(int)
    {
        Integer temp = *this;
        ++(*this); // 전위형 코드를 호출하여 재활용
        return temp;
    }
};

int main()
{
    Integer n1 = 2;
    Integer n2 = ++n1; // 전위 연산자 return : 3
    Integer n3 = 2; 
    Integer n4 = n3++; // 후위 연산자 return : 2

    n2.print();
    n4.print();
}
반응형

+ Recent posts