[C++]매개변수 디폴트 값(Default Value)

2020. 11. 5. 21:36c++

[C++] 매개변수 디폴트 값(Default Value)

 

C++은 매개변수에 디폴트 값이라는 것을 설정할 수 있다. 이 디폴트 값은 매개변수에 미리 값을 설정해 두는 것을 의미한다.

 

C++ 함수의 매개변수는 다음과 같이 설정하는 것이 가능하다.

 

int func(int num =7)

{

      return num +1;

}

int func2(int num1= 5,num2 = 9(

{

      return num1 + num 2;

}

위의 함수 func에서 매개변수 선언은 int num =7이다. 이것은

'이 함수에 아무 인자도 오지 않으면 7이 전달된 것으로 생각할게'라는 의미이다. 그렇기 때문에 다음 두 함수의 호출은 완전히 똑같다. func(); func(7);. func2도 마찬가지로 func2(); func2(5,9); 둘 다 같은 호출이다.

 

디폴트 값은 함수의 선언 부분에만 표현한다.

#include<iostream>
int func(int nu =1, int nu2 =2);

int main(void)
{
    std::cout<<func()<<std::endl;
    std::cout<<func(2)<<std::endl;
    return 0;
}

int func(int num1, int num2)
{
	return num1/ num2;
}

 

위의 코드에서 2번째 줄은 함수 선언이고 11번째 줄은 함수의 정의다. 여기서 잘 보면 디폴트 값이 함수의 선언 부분에만 있는 것을 볼 수 있다. 이렇게 함수의 선언과 정의를 분리시킬 때는 디폴트 값을 함수의 선언 부분에만 넣어야 한다.

 

int funf(int nu = 12, int nu2, int nu3)
{
    return nu+nu2+nu3;
}

int funt(int nu, int nu2 = 2, int nu3 = 3)
{
	return nu+nu2+nu3;
}

 

위의 함수는 맞는 것처럼 보이지만 첫 번째 함수는 에러가 발생한다. 왜냐하면 디폴트 값은 오른쪽부터 채우는 형태로 가야 하기 때문이다. 그렇기 때문에 1번 함수는 유효하지 않고 2번째 함수는 유효하다. 이렇게 되면 반드시 오른쪽부터 써야 하는 이유가 궁금할 것이다. 그 이유는 바로 함수의 인자가 왼쪽부터 채워지기 때문이다. 디폴트 값을 왼쪽 매개변수에만 준다면 그것은 디폴트값이 의미를 잃는 것이기 때문에 오른쪽부터 채우는 것이다.

'c++' 카테고리의 다른 글

[c++] 기타 연산자 오버로딩  (0) 2021.01.30
[c++]참조자  (0) 2020.11.11
[C++]이름공간  (0) 2020.11.07
[C++]인라인(inline) 함수  (0) 2020.11.05