[c] 함수 오버로딩
함수 오버로딩은 한 클래스 내에서 동일한 이름의 함수를 정의하는 기술이다. 파라미터의 개수나 타입이 다를 때 서로 다른 동작을 수행하도록 한다. 함수 이름이 동일하지만 파라미터의 개수나 타입에 따라 컴파일러는 각각의 함수를 식별하고 호출한다.
예제
#include <iostream>
using namespace std;
class Overload {
public:
void print(int i) {
cout << "정수: " << i << endl;
}
void print(double d) {
cout << "실수: " << d << endl;
}
};
int main() {
Overload obj;
obj.print(5); // print(int) 호출
obj.print(5.5); // print(double) 호출
return 0;
}
장점
-
가독성을 높여준다. 같은 기능을 수행하는 함수들이 이름만 다르게 정의되는 것이 아니기 때문에 코드를 이해하기 쉬워진다.
-
중복 코드를 줄일 수 있다. 동일한 기능을 하는 함수를 여러 개 만들 필요 없이 하나의 함수로 여러 상황에 대처할 수 있다.
-
같은 이름의 함수를 사용하기 때문에 코드의 일관성과 유지보수성을 높여준다.
제한사항
-
파라미터의 타입 및 개수가 다르지만 반환 타입이 다른 경우에는 함수 오버로딩이 불가능하다.
-
특수한 경우에는 함수 오버로딩이 모호해질 수 있는데, 이때에는 명시적 형변환을 통해 해결해야 한다.
결론
함수 오버로딩은 다형성(overloading)을 구현하는 중요한 개념으로, 코드의 가독성과 재사용성을 높이는데 도움을 준다. 그러나 실수를 줄일 수 있는 대신 필요에 따라 주의해서 사용해야 한다.
참고: cppreference.com