[c++] 복합 대입 연산자의 오버로딩

C++에서는 사용자 정의 클래스에 대한 연산자 오버로딩이 가능합니다. 복합 대입 연산자도 오버로딩할 수 있는데, 이를 통해 사용자 정의 클래스에 대한 특정 연산을 정의할 수 있습니다.

복합 대입 연산자란?

C++에서는 +=, -=, *=, /= 등과 같이 두 연산을 합친 형태의 연산자를 복합 대입 연산자(Compound Assignment Operators)라고 합니다. 이러한 연산자를 오버로딩하여 사용자가 정의한 클래스에 대해 원하는 연산을 수행할 수 있습니다.

복합 대입 연산자의 오버로딩 방법

복합 대입 연산자를 오버로딩하기 위해서는 해당 연산자의 함수를 클래스 내에서 다음과 같이 정의합니다.

class MyClass {
public:
    MyClass& operator+=(const MyClass& rhs) {
        // += 연산을 정의하는 코드
        return *this;
    }
};

위 예시에서 += 연산자를 오버로딩하였습니다. 이러한 방식으로 다른 복합 대입 연산자들을 오버로딩할 수 있습니다.

예시

아래는 복합 대입 연산자를 오버로딩한 클래스를 사용하는 예시입니다.

#include <iostream>

class MyNumber {
private:
    int num;

public:
    MyNumber(int n) : num(n) {}

    MyNumber& operator+=(const MyNumber& rhs) {
        num += rhs.num;
        return *this;
    }

    void display() {
        std::cout << "Number: " << num << std::endl;
    }
};

int main() {
    MyNumber num1(5);
    MyNumber num2(10);
    
    num1 += num2;
    num1.display();  // 출력: Number: 15
    
    return 0;
}

결론

C++에서는 복합 대입 연산자를 클래스에 대해 오버로딩하여 해당 클래스의 객체에 대한 특정 연산을 사용자가 정의할 수 있습니다.

이를 통해 사용자는 자신이 정의한 클래스에 대해 더 직관적이고 효율적인 연산을 수행할 수 있게 됩니다.

참고 자료