별의 공부 블로그 🧑🏻‍💻
728x90
728x170

* 함수 오버로드 (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
728x90
그리드형(광고전용)

'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
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖