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 |