(C++) 7.4 함수 오버로딩

이준우·2021년 11월 7일
0

동일한 함수 이름을 여러개 만드는 것을 함수 오버로딩이라고 부른다. 함수 오버로딩을 어디에 쓰는지, 단점은 무엇인지 알아보자.

이런 식으로 프로그램을 작성하면 나중엔 헷갈린다. 왜냐하면 거의 동일한 기능을 수행하는데, 자료형만 다를 뿐이니 말이다. 이래서 이런식으로 작성하는데, 이는 complie할때 결정이 되어야 한다. 또한 이 방식이 되는 이유는 자료형이 다르기 때문에 가능하다.


또한, 이처럼 작성하면 오류가 난다. return의 자료형이 다른데 왜 이건 다르게 인식안하죠? 라고 할 수 있는데, 내가 보기엔 매개변수의 자료형으로 그 판가름을 다르게 두는 것 같다. 이건 문제가 없지 않은가?

그렇다면 함수 오버로딩을 할때 함수의 자료형은 크게 문제가 없으니 참조를 사용하여 반환하는 것도 방법 중의 하나이다.이런 식으로 말이다.


문제점은 이것이다. 데이터 타입이 모호할 때 발생한다.

print(0)같은 경우에는 당연히 int로 인식을 할 것이다. 하지만 print('a')같은 경우에는 그렇지 않다. char로 인식을 해야하려고 하였으나, char *value로 명시해놨으므로, print('a')를 int 형으로 인식하는 문제가 발생한다. 즉, 'a'의 주소를 받은건데, 이게 int형의 주소인지 char형의 주소인지 몰라서 그냥 int형으로 반환하는 것이다. 이를 해결하려면 확실히 명시를 해줘야 한다. 이처럼 말이다.

0개의 댓글