C_C++

C++, 단항연산자 오버로딩 (전위 후위 연산자)

고니자니 2024. 11. 15. 11:59
반응형

C++에서 단항 연산자 오버로딩은 클래스 내에서 연산자를 재정의하여 객체에 대해 특정 단항 연산(예: ++, --, -, ! 등)을 수행할 수 있도록 하는 기능입니다. 이를 통해 객체에 대해 사용자 정의 연산을 적용할 수 있습니다.

단항 연산자 오버로딩 예제

아래는 ++ 연산자를 오버로딩하는 간단한 예제입니다.

#include <iostream>
using namespace std;

class Counter {
private:
    int value;

public:
    // 생성자
    Counter(int val = 0) : value(val) {}

    // ++ 연산자 오버로딩 (전위 연산)
    Counter& operator++() {
        ++value; // 값 증가
        return *this; // 증가된 값을 반환
    }

    // ++ 연산자 오버로딩 (후위 연산)
    Counter operator++(int) {
        Counter temp = *this; // 현재 상태 저장
        ++value; // 값 증가
        return temp; // 증가 전 값을 반환
    }

    int getValue() const { return value; }
};

int main() {
    Counter c(5);

    cout << "Initial value: " << c.getValue() << endl;

    ++c; // 전위 증가
    cout << "After prefix increment: " << c.getValue() << endl;

    c++; // 후위 증가
    cout << "After postfix increment: " << c.getValue() << endl;

    return 0;
}

(Output)

Initial value: 5
After prefix increment: 6
After postfix increment: 7

C++, 단항연산자 오버로딩 (전위 후위 연산자)

 

설명

  1. 전위 증가 연산자 (++c)
    • operator++() 함수는 전위 증가 연산자로, 객체의 값을 먼저 증가시킨 후 그 증가된 값을 반환합니다.
    • 반환 타입은 Counter&이며, 증가된 객체 자기 자신을 반환합니다.
  2. 후위 증가 연산자 (c++)
    • operator++(int) 함수는 후위 증가 연산자로, 증가되기 전의 값을 임시 객체에 저장한 후, 실제 객체의 값을 증가시킵니다.
    • 반환 타입은 Counter이며, 증가되기 전의 값을 복사한 임시 객체를 반환합니다.
    • 매개변수로 int를 받지만, 실제로는 후위 연산임을 구분하기 위한 목적으로 사용됩니다.

이와 같은 방식으로 --, -, ! 등 다른 단항 연산자들도 오버로딩할 수 있습니다.

반응형