본문 바로가기

C++

C++ 배우기 16(함수 오버로딩)

함수 오버로딩

함수의 이름은 같지만 매개변수에서의 차이(자료형, 개수)를 두고 사용하는 것을 말한다.

함수 오버로딩의 예시

위 사진처럼 함수의 이름이 모두 같지만, 매개변수의 차이를 두고 있다.

따라서 이름은 같지만 서로 다른 함수처럼 작동할 수 있는데, main() 함수에서 호출할 때 매개변수를 어떻게 호출하냐에 따라서 호출되는 Func() 함수가 달라진다.


디폴트 매개변수

그런데 여기 이름은 같지만 매개변수가 다른 두 개의 Func() 함수가 있다. 대충 봐서는 함수 오버로딩이 되어 작동할 수

있을 것 같지만, 실제로는 작동하지 않는다. 바로 매개변수에 a = 10이라는 디폴트 값을 대입해버렸기 때문이다.

이런 걸 디폴트 매개변수라고 부르는데, 이런 매개변수는 같은 개수의 매개변수를 가진 함수와 겹치거나,

사실상 아예 존재하지 않는 것과 같아서 매개변수가 아예 없는 함수와도 겹쳐서 오류가 발생하는 것이다.

 

하지만 특수한 경우에 디폴트 매개변수를 사용할 때도 있으니, 이런 동작 방식을 잘 기억해두는 것이 좋다.


마지막으로 함수 오버로딩의 조건에는 매개변수의 차이가 있다고 했었다.

즉, input값으로 오버로딩이 가능하다는 것인데, 반대로 return 같은 output 반환값의 차이로는 함수 오버로딩이

성립되지 않으니 주의하자. 반환값이 안된다는 것은 함수의 자료형(반환형)의 차이도 안된다는 뜻이 되겠다.