[c++] 함수 오버로딩과 연산자 오버로딩

이번에는 C++에서 사용되는 함수 오버로딩과 연산자 오버로딩에 대해 알아보겠습니다.

함수 오버로딩

함수 오버로딩은 동일한 이름의 함수를 정의할 수 있는 기능입니다. 다만, 매개변수의 개수나 자료형이 다르거나 또는 반환형이 다를 경우에 한하여 같은 이름의 함수를 여러 개 정의할 수 있습니다.

다음은 함수 오버로딩의 간단한 예제입니다.

#include <iostream>

void print(int num) {
    std::cout << "정수형: " << num << std::endl;
}

void print(double num) {
    std::cout << "실수형: " << num << std::endl;
}

int main() {
    print(10);
    print(3.14);
    return 0;
}

위의 예제에서 print 함수가 정수형과 실수형 매개변수를 받아 각각 다른 동작을 수행합니다.

연산자 오버로딩

연산자 오버로딩은 기존 연산자를 사용자 정의 데이터형에서 사용할 수 있도록 하는 기능입니다.

다음은 연산자 오버로딩의 간단한 예제입니다.

#include <iostream>

class Vector {
private:
    int x, y;
    
public:
    Vector(int a, int b) : x(a), y(b) {}
    
    Vector operator+(const Vector& v) {
        Vector result(x + v.x, y + v.y);
        return result;
    }

    void display() {
        std::cout << "x: " << x << ", y: " << y << std::endl;
    }
};

int main() {
    Vector v1(2, 3);
    Vector v2(1, 4);
    Vector v3 = v1 + v2;
    v3.display();
    return 0;
}

위의 예제에서는 + 연산자에 대한 오버로딩을 통해 Vector 객체 간의 덧셈을 구현했습니다.

이상으로 C++에서의 함수 오버로딩과 연산자 오버로딩에 대해 알아보았습니다.

참고 자료

  1. GeeksforGeeks - Function Overloading
  2. GeeksforGeeks - Operator Overloading