Language/C++

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

bugwasd 2015. 11. 28. 17:35

기존 C 컴파일러에서는 함수의 이름으로만 함수를 찾기 때문에 동일한 이름의 함수 정의는 불가능 했다.

하지만 C++ 컴파일러에서는 [함수의 이름 + 매개 변수의 정보]로 호출하고자 하는 함수를 찾기 때문에 함수의 이름이 같아도 매개변수의 타입이나 개수가 다르다면 함수명 중복을 허용한다.

이를 함수 오버로딩(Function Overloading) 이라 한다.

즉 함수 오버로딩이란 같은 이름의 함수를 매개변수의 타입이나 개수를 다르게 하여 여러개 정의하는 것이다.


다음은 함수 오버로딩의 예이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
void func()
{
    cout << " function(void) " << endl;
}
 
void func(int a, int b)
{
    cout << " function(int a, int b) " << endl;
}
 
void func(char c)
{
    cout << " function(char c) " << endl;
}



위와 같이 같은 이름의 함수를 여러개 정의 할 수 있다.

주의할것은 함수의 이름과 매개 변수의 정보가 같고 리턴타입만 다른 함수는 오버로딩되지 않는다.