C++의 Default Argument에 대해서 알아보겠다.
Default argument란 디폴트 인수나 부재 인수라고 하며, 기본값이 미리 정의되어 있는 인수를 의미한다. 함수를 호출할때, 인수를 전달하지 않으면, 해당 함수는 자동으로 미리 정의해둔 디폴트 인수 값을 사용하게 된다. 하지만 인수를 전달하여 함수를 호출하면 Default argument가 아닌 전달받은 argument로 함수를 호출할 수 있다.
즉, 미리 지정한 argument를 쓸거면 쓰고 말거면 말라는 식이다.
Default argument를 사용해 보자.
#include <iostream>
using namespace std;
int add(int a, int b)
{
return a + b;
}
int add(int a, int b, int c)
{
return a + b + c;
}
void main()
{
int x = 0;
x = add(10, 20);
cout << x << endl;
x = add(10, 20, 30);
cout << x << endl;
}
두 수를 add 해주는 함수와 세개의 수를 add 해주는 함수가 각각 있다.
이러한 함수들은 받을수 있는 parameter수가 2개, 3개로 딱 정해져있다.
add라는 함수는 결국 들어온 parameter들을 모두 더하는 함수인데 위와 같이 만들면 기능은 한정되고 코드만 중복된다.
그래서 저 add들을 지우고 Default argument를 사용하는 방식의 add함수를 만들겠다.
int add(int a, int b, int c = 0, int d = 0)
{
return a + b + c + d;
}
void main()
{
int x = 0;
x = add(10, 20);
cout << x << endl;
x = add(10, 20, 30);
cout << x << endl;
x = add(10, 20, 30, 40);
cout << x << endl;
}
add 함수에 c라는 formal parameter와 d라는 formal parameter는 0으로 미리 값을 넣어놓고 함수를 정의한다.
이렇게 만들어 놓으면 add(10, 20)을 했을때, "10 + 20 + 0 + 0"을 리턴함으로 원하는 값을 얻는다. add(10, 20, 30)을 한다면 "10 + 20 + 30 + 0"이 되어 60이 리턴될 것이다. 네가지 argument를 넣는 경우도 마찬가지이다.
Default argument 설정 시에 주의해야 할점으로는
- Default argument는 함수의 원형에만 지정할 수 있다는 것과 지정 순서는 오른쪽부터 순서대로 인것, 가운데 argument들만 따로 default argument로 지정할 수는 없다는 것 정도이다.
템플릿의 경우에도 적용되는 것을 볼 수 있다.
#include <iostream>
using namespace std;
template <class T>
T add(T a, T b, int x = 10)
{
return a + b + x;
}
void main()
{
int x;
double y;
x = add(10, 20);
cout << x << endl;
y = add(34.5, 23.8);
cout << y << endl;
}
댓글