[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++에서는 사용자 지정 데이터 형식에 대한 조건 연산자를 오버로딩하여 해당 형식에 대한 조건부 동작을 정의할 수 있습니다.
이러한 기능을 통해 코드의 가독성과 재사용성을 높일 수 있으며, 유지 보수가 용이한 코드를 작성할 수 있습니다.
참고 자료
- https://en.cppreference.com/w/cpp/language/operators
이제 더 이해하기 쉬운 조건 연산자(삼항 연산자) 오버로딩에 대한 기본적인 개념을 이해하였으니, 클래스 및 자료형에 대한 사용자 지정 조건 연산자 오버로딩을 구현할 수 있게 되었습니다.