..

Search

39) 디폴트 인수

39) 디폴트 인수

디폴트 인수


디폴트 인수(default argument)

C++에서 새롭게 정의된 디폴트 인수(default argument)는 기본값이 미리 정의되어 있는 인수를 의미합니다.

함수를 호출할 때 인수를 전달하지 않으면, 함수는 자동으로 미리 정의되어 있는 디폴트 인수값을 사용하게 됩니다.

물론 인수를 전달하여 함수를 호출하면, 디폴트 인수값이 아닌 전달된 인수를 가지고 함수를 호출하게 됩니다.


디폴트 인수의 설정

C++에서 디폴트 인수를 설정할 때에는 다음과 같은 사항에 주의해야 합니다.

 

1. 디폴트 인수는 함수의 원형에만 지정할 수 있습니다.

2. 디폴트 인수는 가장 오른쪽부터 시작하여 순서대로만 지정할 수 있습니다.

3. 가운데 인수들만 별도로 디폴트 인수를 지정할 수는 없습니다.

 

함수의 원형 예제

1. void Display(int x, int y, char ch, int z = 4);       // 가능함.

2. void Display(int x, int y, char ch = 'a', int z = 4); // 가능함.

3. void Display(int x, int y = 2, char ch, int z = 4);   // 오류

4. void Display(int x = 1, int y = 2, char ch, int z);   // 오류


디폴트 인수가 설정된 함수의 호출

함수로 전달된 인수는 왼쪽부터 순서대로 매개변수 목록에 대입됩니다.

따라서 디폴트 인수가 설정된 함수를 호출할 때에는 인수의 전달을 건너뛸 수 없습니다.

 

함수의 호출 예제

void Display(int x, int y, char ch = 'a', int z = 4); // 함수의 원형

 

1. Display(1, 2);         // 가능함 -> display(1, 2, 'a', 4)와 같음.

2. Display(3, 4, 'b');    // 가능함 -> display(3, 4, 'b', 4)와 같음.

3. Display(5, 6, 'c', 9); // 가능함 -> display(5, 6, 'c', 8)와 같음.

4. Display(7, 8, , 9);    // 오류 : 인수 전달은 건너뛸 수 없음.

 

예제

double Multi(double, double = 2);

 

int main(void)

{

    cout << Multi(3) << endl;    // Multi(3, 2)와 같음 : 3 * 3

    cout << Multi(3, 3) << endl; // 3 * 3 * 3

    cout << Multi(3, 4);         // 3 * 3 * 3 * 3

    return 0;

}

 

double Multi(double x, double n)

{

    double result = x;

 

    for (int i = 1; i < n; i++)

    {

        result *= x;

    }

    return result;

}

코딩연습 ▶

실행 결과

9

27

81


연습문제