매개변수에 설정하는 '디폴트 값'의 의미
앞에 오버로딩에 대한것을 다루면서 매개 밴수라는 것을 살짝 언급 했는데요, 매개 변수란 무엇일까요?
매개 변수란, 함수를 호출 할 때 전달 해주는 변수를 매개 변수라고 합니다.
1
2
3
4
5
6
7
|
int MyFunc(int num)
{
num++;
return num;
}
MyFunc(7);
|
위의 코드에서 매개 변수는 7이 되는거라고 타입은 int형 할 수 있습니다.
근데 C++의 함수에는 '디폴트 값'이라는 것을 설정할 수 있습니다.
'디폴트 값'이란 '기본적으로 설정되어 있는 값'을 의미하는데요.
함수에서 '디폴트 값'을 정의한다는 것은 다음 형태로 선언하는 것입니다.
1
2
3
4
5
6
7
|
int MyFunc(int num = 7)
{
num++;
return num;
}
MyFunc();
MyFunc(7);
|
매개 변수의 디폴트 값을 선언하지 않은 상태에서 MyFunc()를 호출하면 에러가 발생합니다.
하지만 위와 같이 매개 변수의 값을 미리 설정해주고 MyFunc()라고 설정 했을 때는 에러가 발생하지 않고,
바로 MyFunc() 함수가 호출되어 num++를 한 결과 8이 출력됩니다.
그럼 MyFunc(7)을 했을 때는 어떻게 될까요? 결과적으로 똑같은 결과 값이 출력 됩니다.

매개변수의 디폴트 값을 설정해 주었다고 하더라도 함수를 호출 할 때 전달해주는 값이 있으면 매개변수는 전달된 값을 받게 됩니다.
부분적 디폴트 값 설정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <iostream>
using namespace std;
int MyFunc(int num = 7, int num2 = 8)
{
return num + num2;
}
int main(){
cout<<MyFunc()<<endl;
cout<<MyFunc(10)<<endl;
return 0;
}
|
그럼 위와 같이 함수를 선언하고 호출하게 되면 어떻게 결과 값이 나올까요??
결과는 아래와 같이 출력됩니다.

어떻게 된건지 설명을 드리면, MyFunc() 함수는 아무 값을 전달해 주지 않았기 때문에 두 매개변수의 디폴드 값을 합한 (num + num2) 를 return 하게 됩니다. 하지만 MyFunc(10) 으로 함수를 호출하게 되면 함수에 전달되는 인자가 왼쪽부터 오르쪽으로 채워집니다. 따라서 위와 같은 방식으로 부분적 디폴트 값을 설정할 수 있습니다.
'Software > 열혈C++' 카테고리의 다른 글
C++ 01-2 함수 오버로딩 (Function Overloading) (0) | 2020.07.26 |
---|---|
C++ 01-1 input & output (0) | 2019.12.16 |
열혈 C++ (0) | 2019.11.30 |
댓글