디폴트 값



함수를 호출 할 때 필요한 인자 값을 넣어주지 않으면 어떻게 될까?

컴파일 할 때 인자 값이 없다며 에러를 출력한다.

하지만 함수를 정의 할 때 디폴트 값을 설정 후 위와같이 컴파일 하면 에러가 발생되지 않는다.

이렇게 인자 값을 넣지 않고 함수를 호출 할 수 있는 디폴트 값에 대해 알아보자.



디폴트 값 설정 하기


사용방법은 다음과 같다.

 int sum( int a = 1, int b = 2 )

 {

     return a + b ;

 }


함수 정의 할 때 매개 변수 a, b에 각각 1,2를 초기 값으로 설정해 줬다.

이것이 디폴트 값이라 한다.


아래와 같이 각각 호출 때 결과 값을 예측 해보자.


int result = 0 ;


result = sum();

std::cout<<result<<std::endl;


result = sum( 8 );

std::cout<<result<<std::endl;


result = sum( 6, 3 );

std::cout<<result<<std::endl;


[결과]

 3

 10

 9

result = sum()

-> 두 개 인자 모두 입력되지 않아 모두 디폴트 값으로 설정이 된다.

    디폴트 값이 1,2 이며 두개 합은 3이다.


result = sum(8)

-> 첫번째 인자가 8로 입력되며 두번째 인자는 디폴트 값으로 설정이 된다.

    첫번째 인자 값인 8과 두번째 디폴트 값인 2가 더해져 10이 된다.


result = sum( 6, 3 )

-> 두 개 인자 모두 입력이 되었으며 두 합은 9이다.





 부분 적 디폴트 값 설정 하기

    

함수 매개변수를 부분적으로 선언 가능하다.

 int sum1( int a , int b = 2 int c = 3 )

 {

     return a + b + c ;

 }

 int sum2( int , int b, int c = 3 )

 {

     return a + b + c ;

 }


sum1, sum2 함수에 각각 일부만 디폴트 값을 선언했다.

sum1 함수 후출 할 때 첫 번째 인자를 필수로 넣어야 한다.

sum2 함수 후출 할 때 첫 번째, 두 번째 인자를 필수로 넣어야 한다.


여기서 주의 할 점은 아래와 같이 1,2번째는 디폴트 값을 설정 하고

3번째는 설정 안하면 안된다는 점이다.

int sum( int a = 1, int b = 2, int c ) <=== (X)

int sum( int a = 1, int b, int c ) <=== (X)

int sum( int a, int b = 2, int c ) <=== (X)


부분 디폴트 값 설정은 맨 오른쪽 매개 변수 부터 설정 한다.





[전체 예제]


#include <iostream>


int sum( int a = 1, int b = 2 )

{

    return a + b ;

}


int sum2( int a, int b = 2, int c = 3 )

{

    return a + b + c ;

}


int main(int argc, char** argv) 

{

    int result = 0 ;


    result = sum();

    std::cout<<result<<std::endl;

    

    result = sum(8);

    std::cout<<result<<std::endl;

    

    result = sum( 6, 3 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5, 6 );

    std::cout<<result<<std::endl;

    

    result = sum2( 5, 6, 7 );

    std::cout<<result<<std::endl;

return 0;

}


[결과]

 3

 10

 9
 10
 14
 18




반응형

'프로그램 > C++' 카테고리의 다른 글

[C++] bool 자료형  (0) 2017.12.29
[C++] namespace 사용법  (0) 2017.12.27
[C++]인라인 함수 사용법  (0) 2017.12.26
[C++]함수 오버로딩 (Function Overloading)  (0) 2016.12.03
[C++] cout,cin 사용법  (0) 2016.11.15

+ Recent posts