728x90
함수 오버로딩(Function Overloading이란?)
C언어에서는 동일한 이름의 함수가 정의되면 Complie error를 발생시키게 된다.
int Func_A(int a)
{
a = a + 1;
return a;
}
int Func_A(int a, int b)
{
a = a + b;
return a;
}
하지만 위와 같은 함수의 경우 두가지가 모두 선언되어도 문제가 없을 것이다. 역할이 다르기 때문이다.
int main()
{
Func_A(10); //Func_A(int a) 가 호출된다.
Func_A(10, 20); //Func_A(int a, int b) 가 호출된다.
return 0;
}
위처럼 구분되어 사용될 수 있기 때문에 같은 이름의 함수를 선언하여 Parameter를 다르게 선언할 수 있는 이 기능을 함수 오버로딩(Function Overloading)이라고 한다.
C언어에서는 허용하지 않고, C++에서는 왜 가능할까?
C언어에서는 함수 오버로딩이 허용되지 않는다. 근데 어떻게 C++에서는 가능한걸까?
함수를 찾는 방법이 다르기 때문이다.
C++에서는 '함수의 이름', '매개변수의 선언' 두가지를 통해 함수를 찾게 된다.
Func_A, 와 int형 인자 a를 매개변수로 갖는 함수.
하지만 C에서는 함수의 이름만을 이용해서 함수를 찾게 된다. 따라서 C에서는 함수의 오버로딩을 할 수 없다.
int FA(char a)
int FA(char a, char b)
int FA(char a, int b)
int FA(int a)
int FA(int a, int b) //모두 오버로딩이 가능하다.
void FA(int n) //반환형 (return 형이 다른 경우에는 오버로딩이 불가능)
728x90
'Computer Science > C & C++' 카테고리의 다른 글
[C++] 인라인(inline) 함수 (0) | 2021.07.06 |
---|---|
[C++] 매개변수 디폴트 값 (Default Value) (0) | 2021.07.06 |
댓글