관리 메뉴

Heizelnut의 IT이야기

함수 오버로딩(Function Overloading) 본문

IT_Engineer/C++

함수 오버로딩(Function Overloading)

Heizelnut 2008.04.10 20:56
크리에이티브 커먼즈 라이선스
Creative Commons License
C Style

/*----------------------------------------------------------------------------------------------
function 이라는 함수명이 1개이상 존재하면 컴파일 오류를 발생시킨다.
-----------------------------------------------------------------------------------------------*/
int function(void) {
    return 10;
}

int function(int a, int b) {
    return a+b;
}

int main(void)
{
    function();
    return 0;
}

- C 언어로 작성된 프로그램에서는 위와 같은 함수의 정의가 허용되지 않았다.
  왜냐하면 C Complier는 호출하고자 하는 함수를 찾을 때 오로지 함수의 이름 정보만을 가지고 찾기
  때문에 정의된 매개 변수의 형태가 달라도 동일한 이름의 함수 정의는 허용하지 않는 것이다.

C++ Style

/*--------------------------------------------------------------
C++ 에서는 이러한 코드가 사용가능하다.
---------------------------------------------------------------*/
int function(void) {
    return 10;
}

int function(int a, int b) {
    return a+b;
}

int main(void)
{
    function();
    return 0;
}

- C++은 함수의 이름이 같아도 매개 변수의 타입 및 개수가 다르면 문제되지 않으며, 이를 가리켜
  "함수가 오버로딩(Function Overloading)되었다"라고 표현한다. 따라서 C++은 이름이 같고
  매개 변수의 타입 혹은 개수가 다른 함수들의 정의를 허용한다. 이것이 바로 함수오버로딩의 정의다.

" 함수의 이름은 같지만 매개 변수의 타입이나 개수가 달라야 한다 "

ex> FunctionOverloading.cpp

예제코드보기.


오해하기 쉬운 함수 오버로딩

ex> FunctionOverloading1.cpp

예제코드보기.


* 이 포스트의 내용은 윤성우님의 저서 "열혈강의 C++"에서 개인적으로 공부하기위해서 요약한것입니다
신고
1 Comments
댓글쓰기 폼