728x90
반응형
오버로딩(Overloading) 은 같은 이름의 함수를 여러개 정의할 수 있는 기능이다. 이는 함수의 이름은 같지만 매개변수의 타입이나 개수에 따라 다르게 정의될 수 있음을 의미한다. 함수 오버로딩을 사용하면 가독성을 높이고 함수의 이름을 직관적으로 사용할 수 있다.
기본 개념
- 함수 오버로딩은 함수의 이름을 동일하게 유지하면서도 서로 다른 매개변수 목록을 갖는 여러 버전의 함수를 정의할 수 있다. C++컴파일러는 함수 호출 시 제공된 인수에 기반하여 적절한 오버로딩 된 함수를 선택해 컴파일 한다.
함수 오버로딩의 예
#include <iostream>
// 매개변수가 없는 함수
void print() {
std::cout << "No arguments" << std::endl;
}
// 정수형 매개변수를 가진 함수
void print(int i) {
std::cout << "Integer: " << i << std::endl;
}
// 실수형 매개변수를 가진 함수
void print(double d) {
std::cout << "Double: " << d << std::endl;
}
// 두 개의 매개변수를 가진 함수
void print(int i, double d) {
std::cout << "Integer: " << i << " and Double: " << d << std::endl;
}
int main() {
print(); // No arguments
print(10); // Integer: 10
print(3.14); // Double: 3.14
print(10, 3.14); // Integer: 10 and Double: 3.14
return 0;
}
print
라는 이름의 함수가 네 가지 버전으로 정의되어 있다. 각각의 함수는 다른 매개변수 목록을 가지고 있고 이로 인해 print()
를 호출할 때마다 전달되는 인수에 따라 적절한 함수가 호출된다.
오버로딩 규칙
- 매개변수의 개수
- 함수가 매개변수의 개수에 따라 오버로딩될 수 있다.
void func(int a); // 1개의 매개변수 void func(int a, int b); // 2개의 매개변수
- 함수가 매개변수의 개수에 따라 오버로딩될 수 있다.
- 매개변수의 타입
- 함수가 매개변수의 타입에 따라 오버로딩될 수 있다.
void func(int a); // int 타입 매개변수 void func(double a); // double 타입 매개변수
- 함수가 매개변수의 타입에 따라 오버로딩될 수 있다.
- 매개변수의 순서
- 매개변수의 순서가 다르면 오버로딩할 수 있다.
void func(int a, double b); // int, double 순서 void func(double a, int b); // double, int 순서
- 매개변수의 순서가 다르면 오버로딩할 수 있다.
주의사항
- 리턴 타입만으로는 오버로딩을 구분할 수 없다.
- 같은 매개변수 목록을 가진 두 함수가 서로 다른 리턴 타입을 가질 경우 컴파일 오류가 발생한다.
- 디폴트 인수(Defulat Arguments)
- 디폴트 인수가 있는 함수는 오버로딩과 혼동될 수 있으므로, 매개변수의 개수나 타입이 다르더라도 주의 해야한다.
728x90
반응형
'Programming language > C++' 카테고리의 다른 글
[C++] 디폴트 매개변수, 매개변수의 default 값 (1) | 2024.10.13 |
---|---|
[C++] std::for_each(), for_each() (0) | 2024.10.07 |
[C++] 함수 오버라이딩(override) (0) | 2024.08.31 |
[C++] 디폴트 복사 생성자(Default copy constructor) (0) | 2024.05.31 |
[C++] 소멸자(Destructor), 디폴트 소멸자(Default destructor) (0) | 2024.05.03 |