CafeM0ca

[C++] 디폴트 매개변수 본문

Programming/C++

[C++] 디폴트 매개변수

M0ca 2018. 5. 4. 17:03
반응형

디폴트 매개변수는 함수에서 인자를 넘겨주지 않으면 지정한 값으로 초기화한다.


선언부에 디폴트 값을 설정해주고

1
2
3
auto Func(int n = 10);
auto Func(int n1, int n2 = 30);
 
cs


정의 부분에서는 디폴트값을 명시하지 않아야한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
auto Func(int n /*= 10*/)
{
    cout << n << endl;
}
auto Func(int n1, int n2 /*= 30*/)
{
    cout << n1 << ", " << n2 <<endl;
}
 
// 잘못된 선언
// auto Func(int n1 = 30,int n2,int n3);
 
 
cs

12번째줄을 보면 첫번째 매개변수가 디폴트 매개변수로 30이 지정해줬으나 이는 틀린 문법이다.

디폴트 매개변수는 오른쪽부터 순서대로 체워넣어야한다.


다음과 같이 중간에 비워져도 안된다.

1
2
3
4
// 잘못된 선언
auto Func(int n1 = 30,int n2,int n3 = 40);
 
 
cs



매개변수가 n인 함수를 인자를 넘겨주지 않으면 10을 출력한다.

인자로 20을 넘겨주면 20을 출력한다.


enum class도 마찬가지.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namespace std;
 
enum class Alpha{
    a,
    b,
};
auto EnumTest(Alpha eng = Alpha::a) -> void
{
    if(eng == Alpha::a){
        cout << "a" << endl;
    } else if(eng == Alpha::b){
        cout << "b" << endl;
    } else{
        cout << "eng isn't both a and b" << endl;
    }
}
int main()
{
    EnumTest();
    EnumTest(Alpha::b);
    return 0;
}
 
cs


반응형

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

[딥러닝]역전파  (0) 2018.06.10
[딥러닝] 인공신경망  (0) 2018.06.10
[C++]ios 플래그와 포멧/조직자  (0) 2018.04.08
[C++]boost asio 튜토리얼 정리  (0) 2018.04.05
[C++]boost asio g++ 컴파일 옵션  (0) 2018.04.04
Comments