[c++] 함수 오버로딩과 메소드 오버로딩의 차이

함수 오버로딩 (Function Overloading)

함수 오버로딩은 같은 이름의 함수를 여러 개 정의하는 것을 말합니다. 다만, 매개변수의 개수나 타입이 서로 다른 경우에 사용됩니다. 컴파일러는 함수 호출 시 전달된 매개변수의 형태에 따라 어떤 함수를 호출할지 구분합니다. 아래는 C++에서 함수 오버로딩을 사용한 간단한 예시입니다.

#include <iostream>
using namespace std;

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

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

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

위 예제에서는 print 함수를 정수와 실수 두 가지 타입의 매개변수를 갖는 두 가지 버전으로 오버로딩하였습니다.

메소드 오버로딩 (Method Overloading)

메소드 오버로딩은 클래스 안에서 동일한 이름의 메소드를 여러 개 정의하는 것입니다. 메소드 오버로딩 또한 매개변수의 타입이나 개수가 다른 경우에 사용됩니다. 아래는 Java에서의 메소드 오버로딩 예시입니다.

public class Calculator {
    public int add(int num1, int num2) {
        return num1 + num2;
    }

    public double add(double num1, double num2) {
        return num1 + num2;
    }

    public int add(int num1, int num2, int num3) {
        return num1 + num2 + num3;
    }
}

위의 예제에서는 add 메소드를 각각 정수 두 개, 실수 두 개, 정수 세 개를 매개변수로 받는 세 가지 버전으로 오버로딩하였습니다.

결론

함수 오버로딩과 메소드 오버로딩은 다형성 개념을 통해 코드의 가독성을 높이고, 유사한 동작을 하는 기능에 동일한 이름을 부여하여 일관성을 유지하는 데 사용됩니다. 언어에 따라 구현 방식이나 용어가 다르지만, 핵심적인 개념은 유사하며, 코드 작성과 유지보수에 유용한 특징을 가지고 있습니다.