[c++] 함수 오버로딩과 오버로딩 지시어
함수 오버로딩(function overloading)은 C++에서 여러 함수가 같은 이름을 가질 수 있고, 매개변수 타입이나 갯수에 따라 호출될 함수를 결정하는 기술이다. 이 기능은 다형성(polymorphism)을 구현하는데 사용되며, 코드의 가독성과 재사용성을 높일 수 있다.
함수 오버로딩 예제
다음은 함수 오버로딩의 간단한 예제이다.
#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
함수가 정수와 실수를 매개변수로 받아 각각 다른 처리를 한다.
함수 오버로딩 지시어
C++11부터는 final
과 override
라는 두 가지 함수 오버로딩을 조작하는 지시어가 도입되었다.
final
: 파생 클래스에서 해당 함수를 더 이상 오버라이딩 할 수 없도록 지정한다.override
: 파생 클래스에서 해당 함수가 기본 클래스의 멤버 함수를 오버라이딩함을 명시한다.
class Base {
public:
virtual void display() final {
cout << "Base display 함수" << endl;
}
};
class Derived : public Base {
public:
virtual void display() override {
cout << "Derived display 함수" << endl;
}
};
결론
함수 오버로딩은 C++에서 같은 이름을 가진 여러 개의 함수를 정의하는 기법이다. 이를 통해 코드를 단순화하고 가독성을 높일 수 있으며, 오버로딩 지시어를 통해 오버로딩을 더욱 쉽게 관리할 수 있다.