Pages

Saturday, January 6, 2018

C/C++ 언어 프로그래밍-함수4

C/C++ 언어 코딩 복습 - 함수 4 (Default argument or default parameter)

- 앞에서는 함수의 오버로딩 (Overloading) 대해 정리해 보았습니다. C++ 함수의 특징으로 Default argument 혹은 default parameter 대해 살펴보겠습니다.

- 함수를 호출할 때는 보통 인자의 개수에 맞추어 호출 합니다. 그러나 default parameter 사용하여 인수의 개수를 다르게 주어 호출할 수도 있습니다.

- 예제를 통해 알아보겠습니다.

예제코드
#include <iostream>
using namespace std;

void tDP(int a = 1, int b = 10, int c = 100);

int main() {
     cout << endl;
     cout << "##############################" << endl;
     cout << " Default parameter example " << endl;
     cout << "##############################" << endl;
     cout << endl;

     cout << " No parameters " << endl ;
     tDP();

     cout << " 1 parameter " << endl ;
     tDP(3);

     cout << " 2 parameters " << endl ;
     tDP(3,30);

     cout << " 3 parameters " << endl ;
     tDP(3,30,300);
     return 0;
}

void tDP(int a, int b, int c){
     cout << " a = " << a << ", b = " << b << ", c = " << c << endl;
     cout << endl;
}

- 정수형 인자 개를 갖고 반환값이 없는 함수 ' tDP' 정의하였습니다. 함수 선언부에서 정수형 변수 a, b, c 각각 1, 10, 100 이라는 default 값을 주었습니다. 함수의 정의부에서는 인자로 받은 a, b, c 값이 출력되도록 하였습니다.

- " No parameters " 라는 출력문 다음에 ' tDP()' 이라는 형태로 함수를 호출하였습니다. 다음 인자를 하나씩 늘려 함수를 호출하여 보도록 하겠습니다. 그리고 마지막에는 " 3 parameters " 라는 출력문 다음 ' tDP(3,30,300)' 함수를 호출하였습니다. 결과가 확인해보겠습니다.

실행결과


- 먼저 " Default parameter example " 라는 문구가 출력됩니다.

(1) " No parameters " : 인자를 주지 않고 호출한 경우 (tDP()), default 설정한 값들이 출력됨을 있습니다.

(2) " 1 parameter " : 인자를 하나만 주고 호출한 경우 (tDP(3)), 첫번째 인자 a 값이 3으로 바뀌어 출력되는 것을 있습니다. 이때 나머지 값들은 default 지정한 값이 출력됩니다. ("b = 10, c = 100")

(3) " 2 parameters " : 인자를 두개 주고 호출한 경우 (tDP(3,30)), 첫번째 인자 a 값이 3으로 b 값이 30으로 바뀌어 출력되는 것을 있습니다. 나머지 c 값은 default 지정한 100 출력됩니다.

(4) " 3 parameters " : 인자 세개를 주고 호출한 경우 (tDP(3,30,300)), default 값이 아닌 입력한 값으로 출력되는 것을 있습니다.

주의:
1. default parameter 값은 함수의 선언부에서 지정.
2. 함수 인자부분에서 모두 default 값을 주거나, 오른쪽에서 왼쪽으로 순차적으로 입력.

ex) void aaa(int a=1, int b=2, int c=3);  (O)
   void aaa(int a, int b=2, int c=3);    (O)
   void aaa(int a=1, int b, int c);      (X)
   void aaa(int a, int b=2, int c);      (X)

No comments:

Post a Comment