[c++] 멤버 함수로서의 연산자 오버로딩

C++에서 연산자 오버로딩은 사용자 정의 자료형에 대해 새로운 의미를 부여하거나 기존 의미를 확장하기 위한 강력한 도구입니다. 기본적으로 C++은 연산자를 오버로딩하여 사용자 정의 자료형에 대한 새로운 동작을 정의하는 데 사용될 수 있습니다.

연산자 오버로딩은 멤버 함수전역 함수로 정의될 수 있는데, 이번 글에서는 멤버 함수로서의 연산자 오버로딩에 초점을 맞춥니다.

멤버 함수로의 연산자 오버로딩

멤버 함수로서의 연산자 오버로딩은 연산자가 객체의 멤버 함수로 수행될 때 사용됩니다. 멤버 함수로의 연산자 오버로딩은 다음과 같은 형식을 가집니다.

class MyClass {
public:
    returnType operator@(parameters) {
        // 연산자 오버로딩에 대한 정의
    }
};

여기서 operator@는 오버로딩하고자 하는 연산자의 이름을 나타냅니다. 예를 들어, + 연산자를 오버로딩하고자 하는 경우, operator+ 메서드를 정의합니다.

멤버 함수로서의 연산자 오버로딩은 오른쪽 피연산자가 클래스 객체일 때만 사용할 수 있습니다. 따라서 왼쪽 피연산자는 클래스 객체 자체가 됩니다.

예를 들어, + 연산자를 오버로딩하여 두 개의 MyClass 객체를 더하는 연산을 지원할 수 있습니다.

MyClass operator+(const MyClass& rhs) {
    // 덧셈 연산에 대한 정의
}

예제

다음은 MyClass 객체에 대한 연산자 오버로딩의 간단한 예제입니다.

#include <iostream>

class MyClass {
private:
    int value;

public:
    MyClass(int val) : value(val) {}
    
    MyClass operator+(const MyClass& rhs) {
        return MyClass(this->value + rhs.value);
    }

    void display() {
        std::cout << "Value: " << value << std::endl;
    }
};

int main() {
    MyClass obj1(5);
    MyClass obj2(10);
    MyClass result = obj1 + obj2;
    result.display();

    return 0;
}

위 예제에서, MyClass 객체에 + 연산자가 오버로딩되어 두 객체를 더하는 동작이 수행됩니다.

멤버 함수로서의 연산자 오버로딩은 클래스의 멤버 함수로 연산자를 정의하여 클래스 객체에 새로운 동작을 부여하는 강력한 기능을 제공합니다.

참고 자료

이번 글에서는 C++의 멤버 함수로서의 연산자 오버로딩에 대해 살펴보았습니다. 멤버 함수를 이용한 연산자 오버로딩을 통해 사용자 정의 자료형에 새로운 기능을 추가할 수 있음을 기억해주세요.