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