[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에서 확인할 수 있습니다.