본문 바로가기

Programming/C++

함수 오버로딩

C언어만 공부하다가 C++를 공부하니 참 새롭네요. 정말 C++ 이름처러 C에서 ++된 언어같습니다.

하지만.... 아직 초반이라서 그런지 매번 사용하던 C만큼 편하지 않습니다. ㅠ



C언어에서는 다음과 같은 함수사용은 불가능합니다.



같은 이름의 Func1 함수가 있습니다. 인자 값은 int형을 1개 받는 것도 int형을 2개 받는 함수가 있습니다.

이 소스를 빌드하면 다음과 같은 오류 목록이 나오게 됩니다.




뭐 C언어를 공부해보셨다면 오류 목록이 어떤 의미로 나타난건지 알 수 있습니다. 기본적으로 Func1이라는 함수가 2개가 존재한다는게 말이 안됩니다.











하지만 C++에서는 가능합니다.



똑같은 소스로 빌드를 했습니다. 단지 확장자 .c 와 .cpp의 차이입니다.


이것이 바로 함수 오버로딩 (Function Overloading) 이라고 합니다.





그렇다면 C++은 어떻게 함수를 구별 할 수 있었을까요?


구별을 할 수 있을만한 것을 생각해보면 3가지가 나오네요.


1. 매개변수의 개수


2. 매개변수의 자료형


3. 함수의 반환형





먼저 매개변수의 개수와 자료형이 다를 경우를 출력해보았습니다.

C++은 정상적으로 빌드를 하고 출력을 해주게 됩니다.






그런데 반환형을 다르게 했더니 에러가 나오게 됩니다.






따라서 C++은 매개변수의 개수와 자료형에 따라서 구별을 할 수 있다고 하겠네요.

'Programming > C++' 카테고리의 다른 글

using  (0) 2015.03.19
이름공간  (0) 2015.03.18
인라인 함수  (0) 2015.03.18
Default Value  (0) 2015.03.16
C언어와 다른 C++  (0) 2015.03.12