Prosto

매개변수의 디폴트 값. 본문

Programing/C++ Programing

매개변수의 디폴트 값.

Prosto 2011. 9. 25. 12:47

C++에서는 매개변수의 디폴트 값을 줄 수 있습니다.

int Func(int num=10) { ... }
이라는 함수가 정의되어 있을 경우.

main 함수에서 이 함수를 사용할 때
int main()
{
...
Func();
Func(10);
...
}
인자를 전달 하지 않아도, num=10이라는 값을 디폴트 값으로 전달 받도록 합니다.
그러므로, 위의 Func();와 Func(10);은 같은 의미를 가지게 됩니다.

같은 의미로
int Func(int num=10, int num2=20) { ... }
이라는 함수가 정의되어 있을 경우.

main 함수에서 이 함수를 사용할 때
int main()
{
...
Func();
Func(10);
Func(10, 20);
...
}
인자를 전달 하지 않아도, num=10, num=20이라는 값을 디폴트 값으로 전달 받도록 합니다.
그러므로, 위의 Func();와 Func(10);, Func(10, 20);은 같은 의미를 가지게 됩니다.
만약 여기에서 Func(30);을 사용한다면 어떻게 될까요?
그런 경우에는 입력되있는 값(30)을 앞에서부터 입력됩니다.
Func(30, 20);과 같은 의미가 되는거죠. (int num=30, int num2=20)

또, 디폴트 값 선언은 함수 사용 이전에 함수 선언부에서 이루어져야 합니다.



부분적 디폴트 값 설정도 가능합니다.

int Func(int num1, int num2=10, int num3=20){} ,
int Func(int num1, int num2, int num3=20){} ,
과 같은 함수 정의가 가능합니다.

하지만,
int Func(int num1=5, int num2=10, int num3){} ,
int Func(int num1=5, int num2, int num3=20){}
와 같은 형식으로 선언할 경우
컴파일 오류가 뜹니다.

그 이유는 부분적 디폴 값을 사용할 때에는, 뒤쪽부터 가능하기 때문입니다.
예를 들어, main함수에서 Func(10);라고 입력을 했을 경우.
10이 어느변수를 말 하는 것인지 모르기 때문이죠.

그렇기 때문에 기준과 같이 정해둔겁니다.

앞의 매개변수의 디폴트 값 사용에서 확인했던 것과 같이
Func(10);을 입력했을 때, 그 자리에 맞는 변수와 대치되죠.
Func(10, 20);같은 경우도 같고요.

'Programing > C++ Programing' 카테고리의 다른 글

클래스를 이용한 예제. (좌표 점 이동)  (0) 2011.09.27
이름공간(name space)  (0) 2011.09.25
인라인(inline) 함수  (0) 2011.09.25
Function Overloading  (0) 2011.09.25
C++ 공부 시작.  (0) 2011.09.25
Comments