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++ Primer Plus, 6th Edition, Stephen Prata
- cplusplus.com - Member operators
이번 글에서는 C++의 멤버 함수로서의 연산자 오버로딩에 대해 살펴보았습니다. 멤버 함수를 이용한 연산자 오버로딩을 통해 사용자 정의 자료형에 새로운 기능을 추가할 수 있음을 기억해주세요.