본문 바로가기
IT 이야기/C++

C++ 함수 매개변수 디폴트 값 설정하는 방법

by youngmap 2021. 9. 1.
반응형

C++ 함수에서는 매개변수에 '디폴트 값' (기본 값)을 설정 할 수 있습니다.

 

함수의 매개변수에 "=" 연산자를 써주시면 됩니다.

함수를 호출할 때 인자 값이 없으면 디폴트 값으로 자연스럽게 호출됩니다.

#include <iostream>
using namespace std;

int a(int a=1){
    return a;
}

int b(int a=3, int b=4){
    return a+b;
}

int c(int a, int b=5){
    return a+b;
}

int main()
{
    cout << "a() : " << a() << endl;
    cout << "a(5) : " << a(5) << endl;

    cout << "b() : " << b() << endl;
    cout << "b(1) : " << b(1) << endl;
    cout << "b(2, 8) : " << b(2,8) << endl;

    // cout << "c() : " << c() << endl; 에러
    cout << "c(2) : " << c(2) << endl;
    cout << "c(3,4) : " << c(3,4) << endl;

    return 0;
}

실행 결과 입니다.

결과 해석

1) a 함수는 아무 값도 넘겨주지 않아서 디폴트 값인 1이 들어가고 결과가 1이 됩니다.

 

2) a 함수에 5를 넘겨주면 디폴트 값은 무시되고 5가 들어가고 결과가 5가 됩니다.

 

3) b 함수에 아무 값도 넘겨주지 않아서 디폴트 값인 3과 4가 들어가고 결과는 7이 됩니다.

 

4) * 중요!

b 함수에 1만 넘겨줍니다.

그러면 함수의 인자는 왼쪽부터 채워지기 때문에 1과 디폴트값 4가 함수로 들어가고 결과는 5가 됩니다.

 

5) b 함수에 2, 8이 들어가고 결과는 10이 됩니다.

 

c 함수는 일부만 디폴트 값이 있습니다.

그래서 c() 호출은 에러가 납니다. 소스에서 주석처리 하였습니다.

 

6) C함수에 인자를 1개 넘기면 왼쪽부터 첫번째 값이 채워집니다.

그래서 2, 5(디폴트)가 들어가서 결과는 7이 됩니다.

 

7) C함수에 인자를 2개 넘기므로 3, 4가 들어가서 결과는 7이 됩니다.

 

디폴트 값을 일부만 채우는 경우는 오른쪽 값이 채워져 있어야 합니다.

다음과 같이 왼쪽에만 디폴트 값이 선언되면 컴파일 시 에러가 발생합니다.

이유는 d(1); 이라고 호출하면 매개변수 a가 채워지는데 b는 디폴트 값이 없기 때문에 명확하지 않아 에러가 납니다.

따라서 두번째 매개변수 b에 디폴트 값을 넣거나, a, b 둘다 넣어 주어야 에러가 해결됩니다.

 이상 함수의 디폴트값 선언하는 방법과 주의사항을 알아보았습니다.

반응형