반응형
함수 오버로딩의 이해
#include <iostream>
using namespace std;
int MyFunc(int num) {
return num++;
}
int MyFunc(int a, int b) {
return a + b;
}
int main()
{
MyFunc(2);
}
함수의 이름은 같지만 생성할 때의 매개변수가 다른게 지정하는 것을 오버로딩이라고 한다.
C 언어와는 다르게 C++ 에서는 이러한 방식을 허용한다.
함수호출 시 전달되는 인자를 통해서 호출하고자 하는 함수의 구분이 가낭하기 때문에 구분 짓기가 가능한 것이다.
그렇다면 왜 C++ 은 허용하고 C는 허용하지 않을까?
이유는 호출할 함수를 찾는 방법이 서로 다르기 때문이다.
C++은 호출할 함수를 다음 두 가지 정보를 동시에 활용한다.
"함수의 이름" "매개변수의 선언"
즉, 함수를 찾을때 이름과 같이 매개변수 를 확인하기 때문에 이름이 같더라도 선언한 매개변수의 타입이나 수가 다르다면 서로 다르게 보는 것이다.
반면에
C는 함수의 이름만을 이용해서 호출대상을 찾기 때문에 매개변수가 달라도 이름이 같으면 서로 같은 함수가 중복 선언된는 것으로 본다.
함수 오버로딩을 하려면 매개변수의 선언이 달라야 한다.
1. 타입이 서로 다르다.
2. 매개변수의 생성 개수가 다르다.
주의: 반환형 ( void , int , float ) 은 함수 호출시 함수를 구분짓는 기준이 될 수 없으므로 오버로딩 조건에서 제외된다.
반응형
'c++ > c 언어 기반의 c++ 1' 카테고리의 다른 글
01-06 [C++] OOP 프로젝트 Bank Account (0) | 2022.12.28 |
---|---|
01-05 [C++] 이름공간 (namespace) 이해하기 (0) | 2022.12.28 |
01-04 [C++]인라인 (Inline) 함수 (2) | 2022.12.28 |
01-03 [C++] 매개변수의 디폴트 값 (Default Value) (0) | 2022.12.27 |
01-01 [c++] 입 출력 연산자 (0) | 2022.12.27 |