다음을 통해 공유


기본 인수

대부분의 경우, 함수 이므로 자주 사용 되는 인수 되어 있는 기본값을 적절 하 게.이 문제를 해결 하려면 기본 인수 시설 주어진된 호출에서 의미 있는 인수는 함수에만 지정 하는 수 있습니다.이 개념을 설명 하기 위해 제공 되는 예제 고려 함수 오버 로드.

// Prototype three print functions.
int print( char *s );                  // Print a string.
int print( double dvalue );            // Print a double.
int print( double dvalue, int prec );  // Print a double with a
//  given precision.

대부분의 응용 프로그램에 대 한 적절 한 기본 제공 될 수 있습니다 prec, 두 가지 기능에 대 한 필요가:

// Prototype two print functions.
int print( char *s );                    // Print a string.
int print( double dvalue, int prec=2 );  // Print a double with a
//  given precision.

구현에서 print 함수는 약간 변경 이러한 함수를 하나의 형식에 대 한 존재를 반영 하기 위해 이중:

// default_arguments.cpp
// compile with: /EHsc /c

// Print a double in specified precision.
//  Positive numbers for precision indicate how many digits
//  precision after the decimal point to show. Negative
//  numbers for precision indicate where to round the number
//  to the left of the decimal point.

#include <iostream>
#include <math.h>
using namespace std;

int print( double dvalue, int prec ) {
   // Use table-lookup for rounding/truncation.
   static const double rgPow10[] = { 
      10E-7, 10E-6, 10E-5, 10E-4, 10E-3, 10E-2, 10E-1, 10E0,
         10E1,  10E2,  10E3,  10E4, 10E5,  10E6
   };
   const int iPowZero = 6;
   // If precision out of range, just print the number.
   if( prec >= -6 && prec <= 7 )
      // Scale, truncate, then rescale.
      dvalue = floor( dvalue / rgPow10[iPowZero - prec] ) *
      rgPow10[iPowZero - prec];
   cout << dvalue << endl;
   return cout.good();
}

새 호출 하려면 print 작동, 다음과 같은 코드를 사용 합니다.

print( d );    // Precision of 2 supplied by default argument.
print( d, 0 ); // Override default argument to achieve other
//  results.

이러한 포인트는 기본 인수를 사용 하는 경우 note:

  • 기본 인수가 사용 됩니다만 함수 호출에는 후행 인수가 생략 된, 즉 이러한 마지막 인수 여야 합니다.따라서 다음 코드는 올바르지 않습니다.

    int print( double dvalue = 0.0, int prec );
    
  • 재정의 원본과 동일한 경우에 기본 인수 이후 선언에 재정의할 수 없습니다.따라서 다음 코드는 오류 메시지가 표시 됩니다.

    // Prototype for print function.
    int print( double dvalue, int prec = 2 );
    
    ...
    
    // Definition for print function.
    int print( double dvalue, int prec = 2 )
    {
    ...
    }
    

    함수 선언을 정의에 대 한 기본 인수를 재정의이 코드 문제입니다 prec.

  • 나중에 선언에 의해 추가 기본 인수를 추가할 수 있습니다.

  • 함수에 대 한 포인터에 기본 인수를 제공할 수 있습니다.예를 들면 다음과 같습니다.

    int (*pShowIntVal)( int i = 0 );
    

참고 항목

참조

C + + 추상 선언 자