본문 바로가기
  • 소소한 개발자 이야기
Software/열혈C++

C++ 01-3 매개변수의 디폴트 값(Default Value)

by Siwan_Min 2020. 7. 28.
728x90

매개변수에 설정하는 '디폴트 값'의 의미

앞에 오버로딩에 대한것을 다루면서 매개 밴수라는 것을 살짝 언급 했는데요, 매개 변수란 무엇일까요?

매개 변수란, 함수를 호출 할 때 전달 해주는 변수를 매개 변수라고 합니다. 

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 = 7int num2 = 8)
{
    
    return num + num2;
}
 
 
int main(){
    
    cout<<MyFunc()<<endl;
    cout<<MyFunc(10)<<endl;
    return 0;
}

그럼 위와 같이 함수를 선언하고 호출하게 되면 어떻게 결과 값이 나올까요??

결과는 아래와 같이 출력됩니다.

어떻게 된건지 설명을 드리면, MyFunc() 함수는 아무 값을 전달해 주지 않았기 때문에 두 매개변수의 디폴드 값을 합한 (num + num2) 를 return 하게 됩니다. 하지만 MyFunc(10) 으로 함수를 호출하게 되면 함수에 전달되는 인자가 왼쪽부터 오르쪽으로 채워집니다. 따라서 위와 같은 방식으로 부분적 디폴트 값을 설정할 수 있습니다. 

728x90

'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

댓글