다음은 문자열을 숫자로 변환하는 c++ 표준 함수이다.
double atof(const char* s);
이 함수가 정수와 배정도 정수를 반환하도록 다음과 같은 함수를 오버로딩 하고자 한다.
int atoi(const char* s);
long atol(const char* s);
이 함수들을 오버로딩하는 것이 불가능한 이유는 무엇인가?
정답 : 인자의 타입과 갯수가 같아서 컴파일러가 함수 구분을 하지 못함.
이라고 되어 있는데... 보시면 알겠지만 각각의 함수명이 다 다릅니다. atof, atoi, atol
오버로딩의 가장 큰 특징은 함수명이 같다는 전제에서 시작하며
거기에서 부터 '함수명이 같아도 변수타입과, 인자 갯수를 달리하여 함수를 구분할 수 있다.' 라는 것 아닌가요?
함수명이 다르고 인자타입과, 갯수가 같은것을 오버로딩이라 할 수 있는지, 문제가 좀 이상하다고 생각합니다.
아니면 제가 문제에 대한 접근방법이나 이해를 잘 못한거 같은데... 컴게 여러분의 조언을 듣고 싶습니다.