。공부 。

<C++> 함수오버로딩,디폴트매개변수

kyoe 2007. 11. 21. 23:36
C언어 에선 '함수오버로딩'이란것이 존재하지 않는다 C언어 컴파일러는 함수이름만을 보고 컴파일할뿐이지 함수의 매개변수 갯수와 매개변수 타입이 어떤것지는 구분하지 않기 때문이다 하지만 C++컴파일러는 매개변수의 갯수와 매개변수 타입을 구분할줄 안다 이렇게 컴파일러가 업그레이드 되면서 C++에선 '함수 오버로딩'이란것을 할수있게 된다.
함수 오버로딩이란 함수 이름은 같아도 함수의 매개변수타입 또는 매개변수의 갯수의 따라 함수의 호출을 달리 할수있는것을 말한다.

- 오버로딩을 사용한예 -
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

    int function(int num=10){    //디폴트매개변수 지정 변수값은 10
        num +=10;
        return num;
    }

    int function(int num1,int num2){    //함수이름은 같지만 매개변수의 수가 다르다.
        int result=num1+num2;
        return result;
    }

    int function(char chr){    //타입이 다르다.
        chr='a';
        return chr;
    }

int main(void){
    cout<<function(5)<<endl;      //첫번째 int function(int num=10){}함수를 호출
    cout<<function(15,20)<<endl;  
    cout<<function('a')<<endl;
    return 0;
}

위 예제에서 function()함수가 여러게 존재하는것을 볼수있다. 하지만 각각의 매개변수의 타입과 갯수를 달리함으로써 함수를 호출할때 함수의 충돌을 막을수 있는것이다.
여기서 첫번째정의한 int function(int num=10){}함수를 보면 디폴트 매개 변수num=10 이 정의되어있는것을 알수있다 만약 함수호출시 function();이렇게 아무것도 지정해주지않으면 num에는 디폴트매개변수의 값 '10'이 들어가게된다.