디폴트 값
함수를 호출 할 때 필요한 인자 값을 넣어주지 않으면 어떻게 될까?
컴파일 할 때 인자 값이 없다며 에러를 출력한다.
하지만 함수를 정의 할 때 디폴트 값을 설정 후 위와같이 컴파일 하면 에러가 발생되지 않는다.
이렇게 인자 값을 넣지 않고 함수를 호출 할 수 있는 디폴트 값에 대해 알아보자.
디폴트 값 설정 하기 |
사용방법은 다음과 같다.
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 ; }
|
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 |