우선 디폴트 값(default value)이란, 기본적으로 설정되어있어서 적용되는 값을 의미한다. 전역 변수와 같은 경우에는 기본적으로 0으로 초기화되는 것과 같은 맥락이다.
#include <iostream>
using namespace std;
void Func(int a = 1)
{
cout << a << endl;
}
void Function(int b = 2)
{
cout << b << endl;
}
int main(void)
{
Func();
Func(3);
Function();
Function(4);
return 0;
}
위 코드를 보면 Func 함수에 매개변수 정수형 a가 선언되어 있고 값이 1이라고 되어있는데 int a = 1을 의미하는 것은 함수 호출 시 전달할 인자가 없다면 a의 값을 1로 초기화를 한다는 의미이다. 마찬가지로 Function 함수에서도 매개변수에 int b = 2라고 되어있는데 전달할 인자가 없다면 2로 초기화를 한다고 설정되어있는 것이다.
#include <iostream>
using namespace std;
int ADD(int n1 = 1, int n2 = 2);
int main(void)
{
cout << ADD();
}
int ADD(int n1, int n2)
{
return n1 + n2;
}
그리고 디폴트 값은 함수의 선언 부분에만 표현하면 된다.
#include <iostream>
using namespace std;
int ADD(int n1, int n2 = 2);
int main(void)
{
cout << ADD(1);
}
int ADD(int n1, int n2)
{
return n1 + n2;
}
그리고 부분적으로 디폴트 값을 설정할 수 있는데 위 코드에서 n2의 디폴트 값은 설정되어있지만 n1의 경우에는 설정되어 있지 않아서 함수를 호출하는 부분에 1이라는 수를 전달시켰다.
#include <iostream>
using namespace std;
int ADD(int n1 = 1, int n2);
int main(void)
{
cout << ADD(2);
}
int ADD(int n1, int n2)
{
return n1 + n2;
}
참고로 위의 코드는 에러가 난다. 왜냐하면 오른쪽에 있는 매개변수가 디폴트 값이 지정이 안되었기 때문이다. 그렇다면 오른쪽 매개변수의 디폴트 값이 설정되게 선언을 해야한다.
'컴퓨터 > C, C++' 카테고리의 다른 글
함수 오버로딩[C++] (0) | 2020.12.09 |
---|---|
합병 정렬(merge sort) C언어 (0) | 2020.06.03 |
C언어 printf() 함수와 puts() 함수 (0) | 2019.12.21 |