[c++] 연산자 오버로딩과 형 변환 연산자

연산자 오버로딩 (Operator Overloading)

C++에서, 사용자 정의 클래스나 구조체에 대해서도 기존 연산자의 동작을 재정의할 수 있습니다. 이를 통해 객체 간 연산을 직관적으로 표현할 수 있고, 코드 가독성을 높일 수 있습니다.

class Vector {
public:
    int x, y;

    Vector() : x(0), y(0) {}
    Vector(int x, int y) : x(x), y(y) {}

    Vector operator+(const Vector& v) {
        return Vector(x + v.x, y + v.y);
    }
};

위 코드에서 operator+ 함수를 통해 + 연산자를 재정의하여 두 Vector 객체의 덧셈을 정의했습니다. 이를 통해 두 Vector 객체를 더할 때 수학적인 덧셈 연산과 동일한 방식으로 사용할 수 있습니다.

형 변환 연산자 (Type Conversion Operator)

형 변환 연산자는 클래스나 데이터 형식을 다른 형식으로 변환할 때 사용됩니다. 예를 들어, 사용자가 정의한 클래스를 기본 데이터 형식으로 변환하거나, 그 반대로 변환할 수 있습니다.

class Complex {
private:
    double real, imag;

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

    operator double() const {
        return real;
    }
};

위 코드에서 operator double() 함수를 통해 Complex 클래스를 double 형식으로 변환하도록 정의하였습니다. 이를 통해 Complex 객체를 double로 변환하여 사용할 수 있습니다.

결론

C++의 연산자 오버로딩과 형 변환 연산자를 적절히 활용하면 사용자 정의 클래스나 데이터 형식을 직관적으로 다룰 수 있습니다. 연산자 오버로딩을 이용하여 사용자-defined 형식에 대한 연산을 지원하고, 형 변환 연산자를 통해 다른 형식으로의 변환을 유연하게 처리할 수 있습니다.