[c++] 연산자 오버로딩과 연산의 우선순위
C++에서는 연산자를 오버로딩하여 새로운 사용 방법을 정의할 수 있습니다. 이를 통해 사용자 정의 데이터 타입에 대한 산술 연산, 비교, 논리 연산 등의 사용법을 정의할 수 있습니다.
연산자 오버로딩 (Operator Overloading)
C++에서 연산자 오버로딩은 기존 연산자의 동작을 사용자 정의 데이터 타입에 맞게 재정의하는 메커니즘을 말합니다. 이를 통해 개발자는 사용자 정의 클래스나 구조체에 대해 새로운 연산을 정의할 수 있습니다.
아래는 ‘+’ 연산자를 오버로딩하는 예제입니다.
class Complex {
private:
double real;
double imag;
public:
Complex(double r, double i) : real(r), imag(i) {}
Complex operator+(const Complex& other) {
return Complex(real + other.real, imag + other.imag);
}
};
int main() {
Complex a(2, 3);
Complex b(4, 5);
Complex c = a + b; // '+' 연산자가 오버로딩된 함수가 호출됨
}
연산의 우선순위
연산자 오버로딩을 할 때, 연산자의 우선순위와 결합 법칙을 고려해야 합니다. 오버로딩된 연산자들은 기존의 연산자들과 동일한 우선순위와 결합 법칙을 따릅니다.
즉, 사용자 정의 연산자의 우선순위나 결합 방향을 변경할 수 없습니다. 반드시 C++에서 정의한 우선순위와 결합 법칙을 따라야 합니다.
결론
C++에서 연산자 오버로딩을 통해 사용자 정의 데이터 타입에 대한 연산을 정의할 수 있습니다. 그러나 연산자 오버로딩 시에는 C++에서 정의한 연산의 우선순위와 결합 법칙을 따라야 합니다.
더 많은 정보는 C++ Reference에서 확인할 수 있습니다.