: 동일한 이름의 함수를 여러개 만들 수 있음.
: 동일한 기능을 가지고 있지만, 인자가 늘어나는 것을 대비하기 위해 만듦.
problem
: void func(int a) 에다가 3.8 과 3.4f를 보내서 인자 값을 출력해보아라.
:: 그리고 데이터 손실이 발생하지 않게 해결하라.
1) 정수형과 포인터 타입에 대한 오버로딩은 만들지 말자.
: 포인터의 경우, 0이 인자로 들어갈 수 있음.
-> 모호성 발생함.
2) 디폴트 파라미터가 있는 함수가 있을 경우
, 가시성이 떨어짐.
가) 반환 타입만 다르게 하는 함수오버로딩을 만들어보자.
: int 반환으로 하는 func과 void 반환하는 func 을 만들어라.
나) 인자 타입, 갯수를 다르게 하는 함수 오버로딩을 만들어보자.
: void func (int) , double func(string), double func( void) 을 만들어라.
다) 정수형과 포인터 타입의 함수 오버로딩을 만들어보자.
-> 오류는 발생하지 않지만, 모호한 표현임.
--> char*를 호출한다고 한다면, func(nullptr) 로 호출하면 됨.
: void func(int ) , void func(char *) 함수를 만들어라.
라) 디폴트 파라미터가 있는 경우에 대한 함수 오버로딩을 만들어보자.
: void func(int a) , void func(int a , int b = 0) 함수를 만들어라.