* 함수 오버로드 (Function Overloading)
- 인수의 형과 개수가 다르면 같은 이름을 가진 함수를 여러 개 정의할 수 있음.
- 예)
int max(int x, int y) double max(double x, double y) |
- 이처럼 인수의 개수 및 형이 다르면서 이름만 같은 함수를 여러 개 정의하는 행위를 일컬어 함수의 오버로드(중복정의 : function overloading)이라고 부름.
- 비슷한 함수 여러 개를 같은 이름으로 중복 정의(오버로드)해 두면, 그 이름과 일치하는 함수 중 인수의 형(type)과 개수가 일치하는 함수가 자동적으로 호출됨.
- 오버르드 기능을 활용하면 가독성이 높은 코드를 작성할 수 있음.
- 오버르드 사용시 주의점 -> 오버로드할 함수는 그 인수의 형태와 개수가 기존에 선언된 함수와 달라야 함.
int func(int a); void func(int a);
// 이 두 개의 함수는 리턴 값의 형(type)만 다름.
func(10); // -> 컴퓨터의 입장에서는 두 함수 중 어느 것을 호출해야 할지 판단할 수 없음. |
- 따라서, 함수를 오버로드할 때는 각각의 함수들의 인수의 형과 개수를 다르게 설정해야 함.
- 기본 인수를 사용하는 경우에도 마찬가지 이유로 함수의 오버로드가 불가능한 경우가 있음.
int func(int a, int b=0); // 기본 인수를 사용 int func(int a);
func(10); // -> 컴퓨터는 어느 함수를 호출해야 할지 판단할 수 없음. |
- 따라서 오버로드를 활용하려면 인수 설정에 주의해야 함.
- 오버로드하는 함수는 이미 선언된 함수와 비교하여, 인수의 형(type) 또는 개수를 다르게 선언해야 함.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
#include <iostream>
using namespace std;
// max 함수의 선언
int max(int x, int y);
double max(double x, double y);
int main() {
int a, b,;
double da, db;__acrt_iob_func
cout << "정수 2개를 입력하십시오. \n";
cin >> a >> b;
cout << "소수 2개를 입력하십시오. \n";
cin >> da >> db;
int ans1 = max(a, b);
double ans2 = max(da, db);
cout << "입력받은 정수의 최대 값은 " << ans1 << "입니다. \n";
cout << "입력받은 소수의 최대 값은 " << ans2 << "입니다. \n";
return 0;
}
// max(int형) 함수의 정의
int max(int x, int y) {
if(x > y) return x;
else return y;
}
// max(double형) 함수의 정의
double max(doulbe x, double y) {
if(x > y) return x;
else return y;
} |
cs |
'Programming > C++' 카테고리의 다른 글
[STL] sort (0) | 2017.09.22 |
---|---|
C++ Character Literals (0) | 2017.09.02 |
인수와 레퍼런스 (0) | 2017.05.30 |
함수 템플릿 (Function Template) (0) | 2017.05.29 |
기본 인수 (Default Argument) (0) | 2017.05.25 |
인라인 함수 (Inline Function) (0) | 2017.05.25 |
const (0) | 2017.05.25 |
키보드 입력 (0) | 2017.05.25 |