[c++] 비교 연산자의 오버로딩
C++에서 비교 연산자(==
, !=
, <
, >
, <=
, >=
)는 사용자 정의 클래스에 대해 사용될 때 기본 동작이 예상과 다를 수 있습니다.
사용자 정의 클래스에서 비교 연산자를 사용하려면 비교 연산자를 오버로딩해야 합니다. 비교 연산자의 오버로딩을 통해 객체 간 비교 동작을 정의할 수 있습니다.
==
와 !=
연산자 오버로딩
사용자 정의 클래스에서 ==
와 !=
연산자를 오버로딩하기 위해서는 클래스 내에 다음과 같은 멤버 함수를 정의해야 합니다.
bool operator==(const MyClass& other) const {
// 비교 연산 정의
return ...;
}
bool operator!=(const MyClass& other) const {
// 비교 연산 정의
return ...;
}
==
연산자를 오버로딩하는 경우 두 객체가 동일한지를 확인하고, !=
연산자를 오버로딩하는 경우 두 객체가 다른지를 확인해야 합니다.
<
, >
, <=
, >=
연산자 오버로딩
<
, >
, <=
, >=
연산자는 한 연산자를 다른 연산자를 통해 정의할 수 있습니다. 일반적으로 <
와 >
연산자를 오버로딩하고, 나머지 두 연산자는 이를 이용하여 정의합니다.
bool operator<(const MyClass& other) const {
// 비교 연산 정의
return ...;
}
// >, <=, >= 연산자 정의
bool operator>(const MyClass& other) const {
return (other < *this);
}
bool operator<=(const MyClass& other) const {
return !(*this > other);
}
bool operator>=(const MyClass& other) const {
return !(*this < other);
}
위의 예시 코드는 MyClass
클래스에 대해 비교 연산자를 오버로딩하는 방법을 보여줍니다.
요약
비교 연산자의 오버로딩을 통해 사용자 정의 클래스에 대한 객체 간 비교 동작을 정의할 수 있습니다. 이를 통해 코드의 가독성과 확장성을 향상시킬 수 있습니다.
참고 자료: cplusplus.com - Overloading comparison operators