[c++] 연산자의 오버로드

C++에서 연산자의 오버로드는 사용자가 정의한 클래스나 데이터 형식에 대해 연산자의 동작을 재정의하는 과정을 말합니다. 기본적으로 C++은 많은 연산자들을 오버로드할 수 있도록 허용하여, 사용자 정의 데이터 형식에 대해 사용자가 원하는 대로 동작하도록 만들 수 있습니다.

연산자의 오버로드 방법

연산자의 오버로드는 멤버 함수로 오버로드할 수도 있고, 전역 함수로 오버로드할 수도 있습니다. 멤버 함수로 오버로드하는 경우 연산자의 왼쪽 피연산자는 호출된 객체 자체가 되고, 오른쪽 피연산자는 함수의 매개변수로 전달됩니다.

class MyNumber {
public:
    int value;
    MyNumber operator+(const MyNumber& other) {
        MyNumber result;
        result.value = this->value + other.value;
        return result;
    }
};

위의 코드에서 operator+는 MyNumber 클래스의 멤버 함수로 오버로드되었습니다.

전역 함수로 연산자를 오버로드하는 경우 왼쪽 피연산자는 첫 번째 매개변수로, 오른쪽 피연산자는 두 번째 매개변수로 전달됩니다.

class MyNumber {
public:
    int value;
};

MyNumber operator+(const MyNumber& num1, const MyNumber& num2) {
    MyNumber result;
    result.value = num1.value + num2.value;
    return result;
}

연산자의 오버로드 사용 예시

MyNumber num1, num2, result;
num1.value = 5;
num2.value = 10;
result = num1 + num2;

위의 코드에서 num1 + num2의 연산은 MyNumber 클래스에 오버로드된 operator+ 함수를 호출하게 됩니다.

참고 자료

cppreference.com - Operator overloading

learncpp.com - Overloading operators

이처럼 C++에서는 연산자의 동작을 사용자가 직접 정의할 수 있어, 다양한 사용자 정의 데이터 형식을 보다 직관적으로 사용할 수 있습니다.