[c++] 함수 오버로딩과 그리고 오버라이딩

C++에서 함수 오버로딩과 오버라이딩은 객체 지향 프로그래밍에서 중요한 개념입니다. 여기서는 이 두 가지 개념의 차이와 사용법에 대해 알아보겠습니다.

함수 오버로딩 (Function Overloading)

함수 오버로딩은 같은 이름을 가지는 함수를 여러 개 정의하는 것을 말합니다. 이때, 매개변수의 유형, 순서 또는 개수가 다른 여러 함수를 정의할 수 있습니다. 즉, 함수의 시그니처가 다른 경우에 함수 오버로딩이 가능합니다.

예제

#include <iostream>
using namespace std;

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

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

int main() {
    print(5);
    print(4.5);
    return 0;
}

위 예제에서는 print 함수가 정수와 실수를 매개변수로 받는 두 개의 오버로딩된 함수로 정의되어 있습니다.

함수 오버라이딩 (Function Overriding)

함수 오버라이딩은 파생 클래스(자식 클래스)에서 기본 클래스(부모 클래스)에 정의된 함수를 새로 정의하는 것을 말합니다. 즉, 기본 클래스의 함수를 파생 클래스에서 재정의하여 사용하는 것입니다.

예제

#include <iostream>
using namespace std;

class Animal {
public:
    void sound() {
        cout << "나는 동물입니다." << endl;
    }
};

class Dog : public Animal {
public:
    void sound() {
        cout << "멍멍!" << endl;
    }
};

int main() {
    Animal a;
    Dog d;
    a.sound();
    d.sound();
    return 0;
}

위 예제에서 Animal 클래스의 sound 함수를 Dog 클래스에서 오버라이딩하여 새로운 내용으로 재정의하였습니다.

이상으로 C++에서 함수 오버로딩과 오버라이딩에 대해 알아보았습니다. 함께 사용되는 경우가 많지만, 각각의 개념과 사용법을 명확하게 이해하는 것이 중요합니다.

참고 자료


번역 및 내용 추가