반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 |
#include <iostream>
using namespace std;
int MyFunc(int num)
{
num++;
return num;
}
int MyFunc(int a, int b)
{
return a+b;
}
int main(){
MyFunc(20); // MyFunc(int num) 호출
MyFunc(30, 40); // MyFunc(int a, int b) 호출
return 0;
} |
cs |
C언어에서는 이름만으로 파악한다. 위 소스로는 함수의 이름이 같기 때문에 컴파일 오류가 난다.
C++는 이름과 인수를 가지고 파악하기때문에 MyFunc라는 같은 함수 이름이 있더라도 전달 인사를 통해서 호출하고자 하는 함수의 구분이 가능하기 때문에 매개변수의 선언형태가 다르다면, 동일한 이름의 함수정의를 허용할 수 있다.
함수 오버로딩이 가능한 예를 들어보자
1
2
3
4
5
6
7
8
9 |
int MyFunc(char c)
{
// 정의
}
int MyFunc(int n)
{
// 정의
} |
cs |
위 경우는 자료형이 다르므로, 전달인자의 자료형을 통해서 호출할 함수의 구분이 가능하기 때문에 컴파일이 된다.
1
2
3
4
5
6
7
8
9 |
int MyFunc(int n)
{
// 정의
}
int MyFunc(int n1, int n2)
{
// 정의
} |
cs |
위 경우는 매개변수의 개수가 다르므로, 전달되는 인자의 개수를 통해서 호출할 함수의 구분이 가능하기에 컴파일이 된다.
정리하자면 다음 조건을 만족해야 된다.
"매개변수의 자료형 또는 개수가 다르다"
반응형
'공부 > 개발노트' 카테고리의 다른 글
[C/C++] 매크로 함수 (0) | 2016.08.21 |
---|---|
[C/C++] 함수 오버로딩 디폴트값(defalut 값) 기본값 (0) | 2016.08.21 |
[C/C++] sizeof 연산자를 활용해서 배열의 크기 알아보기 (0) | 2016.08.19 |
[C/C++] 배열의 원소를 복사하기 (0) | 2016.08.19 |
[C/C++] 배열의 초기화 (0) | 2016.08.19 |