[c++] 연산자 오버로딩과 템플릿

C++에서 연산자 오버로딩과 템플릿은 코드를 간결하고 유연하게 만들어줍니다. 이러한 기능들을 사용하여 사용자 정의 클래스나 데이터 구조체를 만들 때 매우 유용하게 활용할 수 있습니다.

연산자 오버로딩

C++에서 연산자 오버로딩(Operator overloading)은 사용자 정의 데이터 타입에서 기본 연산자의 동작을 재정의하는 기능을 말합니다.

예를 들어, 두 개의 사용자 정의 클래스 객체에 덧셈 연산을 수행할 수 있도록 연산자 오버로딩을 사용할 수 있습니다.

class Complex {
public:
    int real, imag;
    Complex operator+(const Complex &c) {
        Complex temp;
        temp.real = real + c.real;
        temp.imag = imag + c.imag;
        return temp;
    }
};

위의 예시에서 operator+ 함수를 사용하여 Complex 클래스에서 덧셈 연산을 오버로딩하였습니다.

템플릿

템플릿(Template)은 제네릭 프로그래밍을 지원하기 위한 C++의 강력한 기능 중 하나입니다. 템플릿을 사용하면 함수나 클래스를 일반화하여 여러 데이터 타입에 대해 동작하도록 만들 수 있으며, 코드의 재사용성을 높일 수 있습니다.

template <class T>
T add(T a, T b) {
    return a + b;
}

위의 예시에서 add 함수는 제네릭하게 구현되어 있으며, 어떤 데이터 타입에 대해서도 정수나 실수 덧셈을 수행할 수 있습니다.

연산자 오버로딩과 템플릿은 C++에서 강력한 기능을 제공하여 코드의 유연성과 확장성을 높여줍니다.

참고 자료