본문 바로가기
Computer Science/C & C++

[C++] 함수 오버로딩 (Function Overloading)

by 진뚱 2021. 7. 6.
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

댓글