[c++] 조건 연산자(?:)의 오버로딩

C++에서는 조건 연산자(조건식 ? 참일 때 값 : 거짓일 때 값)를 오버로딩할 수 있습니다.

이러한 기능은 클래스 내에서 사용자 지정 데이터 형식에 대한 조건 연산을 직접 정의하고자 할 때 유용합니다.

구문

typename operator ? (condition) ? true_expression : false_expression;

위의 구문에서 typename은 반환 형식을 나타내는 자료형입니다.

예제

아래의 예제에서는 Complex 클래스에서 조건 연산자를 오버로딩하는 방법을 보여줍니다.

#include <iostream>

class Complex {
private:
    double real;
    double imag;

public:
    Complex(double r, double i) : real(r), imag(i) {}

    // 조건 연산자 오버로딩
    friend Complex operator ? (bool condition, Complex& c1, Complex& c2) {
        return condition ? c1 : c2;
    }
};

int main() {
    Complex c1(2.0, 3.0);
    Complex c2(4.0, 5.0);
    bool condition = true;

    Complex result = condition ? c1 : c2;

    std::cout << result.real << " + " << result.imag << "i" << std::endl;

    return 0;
}

위의 예제에서는 Complex 클래스에 operator ?를 오버로딩하여 두 개의 Complex 객체를 조건에 따라 반환하도록 정의하였습니다.

결론

C++에서는 사용자 지정 데이터 형식에 대한 조건 연산자를 오버로딩하여 해당 형식에 대한 조건부 동작을 정의할 수 있습니다.

이러한 기능을 통해 코드의 가독성과 재사용성을 높일 수 있으며, 유지 보수가 용이한 코드를 작성할 수 있습니다.

참고 자료

이제 더 이해하기 쉬운 조건 연산자(삼항 연산자) 오버로딩에 대한 기본적인 개념을 이해하였으니, 클래스 및 자료형에 대한 사용자 지정 조건 연산자 오버로딩을 구현할 수 있게 되었습니다.