함수 오버로딩 개요
함수 오버로딩은 같은 이름의 함수를 여러 개 정의할 수 있게 해주는 C++의 강력한 기능입니다.
이는 매개변수의 타입이나 개수가 다른 경우에 가능합니다.
함수 오버로딩을 통해 프로그래머는 직관적인 함수 이름을 유지하면서도 다양한 타입에 대해 작업할 수 있습니다.
함수 오버로딩의 기본 원리
다음은 함수 오버로딩의 간단한 예시입니다.
이 예제에서 add
함수는 정수와 실수에 대해 각각 다르게 정의되어 있습니다.
함수 오버로딩의 장점
1. 직관적인 함수 이름 사용 : 같은 동작을 하는 함수들에 대해 일관된 이름을 사용할 수 있습니다.
2. 타입에 따른 적절한 구현 : 각 타입에 최적화된 구현을 제공할 수 있습니다.
3. 코드의 가독성 향상 : 함수의 목적이 명확해지고, 사용하기 쉬워집니다.
4. 타입 안전성 : 컴파일러가 적절한 함수를 선택하므로 타입 관련 오류를 줄일 수 있습니다.
함수 오버로딩 해결 과정
컴파일러는 다음 순서로 함수 호출을 해결합니다.
- 정확한 타입 일치
- 승격 (예 :
char
→ int
, float
→ double
)
- 표준 변환 (예 :
int
→ double
, double
→ int
)
- 사용자 정의 변환
오버로딩 주의사항
- 반환 타입만 다른 경우 오버로딩 불가
- 모호한 호출 피하기
- 기본 매개변수와의 상호작용
함수 템플릿과 오버로딩
함수 템플릿과 일반 함수를 함께 사용할 때, 컴파일러는 가장 특수화된 버전을 선택합니다.
연산자 오버로딩 소개
함수 오버로딩의 개념은 연산자에도 적용될 수 있습니다.
연습 문제
- 정수, 실수, 문자열을 인자로 받아 각각의 타입에 맞는 출력을 하는
print
함수를 오버로딩하여 구현하세요.
- 2차원 및 3차원 좌표를 표현하는
Point2D
와 Point3D
클래스를 만들고, +
연산자를 오버로딩하여 좌표의 덧셈을 구현하세요.
참고자료