디폴트 값이란 무엇인가?
함수 호출 시 인자를 넣지 않는 경우 기본적으로 설정되어 있는 값을 의미한다.
반대로, 인자를 넣는 경우에는 설정 되어있는 값을 사용하는 것이 아닌 현재 넣는 인자의 값을 사용한다.
디폴트 매개변수를 사용하는 방법은 무엇인가?
함수 호출 시 매개변수에 "= 값 "을 사용하여 값을 설정 할 수 있다.
아래의 예제를 보고 내용을 확인 해보겠습니다.
#include <iostream>
using namespace std;
int Sum(int x = 1, int y = 2);
int main(void)
{
cout << " Sum() :" << Sum() << endl;
cout << " Sum(3,4) : " << Sum(3,4) << endl;
cout << " Sum(3) : " << Sum(3) << endl;
return 0;
}
int Sum(int x, int y)
{
return x + y;
}
1. Sum(int x, int y)
: 흔히 볼 수 있는 함수를 호출 할 때의 인자이다. Sum( 값, 값 )을 통해 인자의 값을 넣어주어 사용을 한다.
2. Sum(int x, int y = 2)
: y의 인자가 디폴트 값이 세팅되어있다. y에 사용자가 값을 넣지 않는 경우 y의 값에 10을 넣어 함수를 사용한다.
* Sum(값)와 같이 함수 호출 시 해당 값은 x에 들어가고 y 변수는 2의 디폴트 값이 들어간다.
3. Sum(int x = 1, int y = 2)
: x,y의 인자 모두 디폴드 값이 세팅되어있다.
* Sum();와 같이 호출 시에는 x, y 변수 디폴드 값으로 들어가 함수를 수행한다.
* Sum(3); 와 같이 호출 시 x변수에 3의 값이 들어가 함수를 수행한다.
사용시 중요한점
1. 디폴드 값을 설정 시에는 오른쪽부터 값을 채워야한다.
2. 중간에 값을 비워서 설정하면 안된다.
3. 디폴드 값이 설정되어있지 않는 수 만큼 해당 인자의 수만큼 함수를 호출해야한다.
함수에 전달되는 인자가 왼쪽에서부터 오른쪽으로 채워지기 때문에 어느 인자를 생략할 경우, 어느 인자에 값을 넣는지 알 수 없기 때문에 중요사항을 꼭 지켜야한다.
Sum(int x, int y = 20, int z = 30)의 함수 호출 시 x의 경우 디폴드 값이 지정되어있지 않기 때문에 하나 이상의 인자를 전달하여 사용해야한다. 인자를 전달하지 않는 형태의 함수 호출의 경우 컴파일 에러로 이어진다.
'C++언어' 카테고리의 다른 글
함수 오버로딩 ( Function Overloading) (0) | 2022.04.20 |
---|