[c++] 사용자 정의 클래스에서의 연산자 오버로딩

C++에서는 사용자 정의 클래스에서 연산자를 오버로딩하여 클래스 객체 간의 연산을 지원할 수 있습니다. 이러한 기능을 통해 사용자가 정의한 클래스에 대해 기존 연산자를 적용할 수 있으며, 코드의 가독성을 향상시키고 유지보수를 간편하게 할 수 있습니다.

연산자 오버로딩의 기본 문법

다음은 연산자 오버로딩의 기본적인 문법입니다. 아래 예시에서는 덧셈 연산자를 오버로딩하는 방법을 보여줍니다.

class MyNumber {
public:
    int value;
    MyNumber(int v) : value(v) {}

    MyNumber operator+(const MyNumber& other) {
        MyNumber result(0);
        result.value = this->value + other.value;
        return result;
    }
};

위 예시에서 operator+ 함수는 MyNumber 클래스에 대한 덧셈 연산자를 오버로딩하는 함수입니다. 이 때 this는 현재 객체를 가리키고, other는 연산자가 적용되는 다른 객체를 가리킵니다.

예시

다음은 사용자 정의 클래스에서 연산자 오버로딩을 사용하는 간단한 예시입니다.

#include <iostream>

class MyNumber {
public:
    int value;
    MyNumber(int v) : value(v) {}

    MyNumber operator+(const MyNumber& other) {
        MyNumber result(0);
        result.value = this->value + other.value;
        return result;
    }
};

int main() {
    MyNumber num1(5);
    MyNumber num2(10);
    MyNumber sum = num1 + num2;
    std::cout << "Sum: " << sum.value << std::endl;
    return 0;
}

위 예시에서 MyNumber 클래스에서 덧셈 연산자를 오버로딩하여 두 객체를 더한 결과를 출력하는 방법을 보여줍니다.

연산자 오버로딩은 C++에서 매우 강력한 기능으로, 클래스의 사용법을 훨씬 더 유연하고 직관적으로 만듭니다. 올바르게 사용된 연산자 오버로딩은 코드의 가독성을 향상시키고 유지보수를 더 쉽게 만듭니다.

더 많은 자세한 정보는 아래 C++ 공식 문서를 참고하시기 바랍니다.

참고: C++ 연산자 오버로딩 문서