[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