다음을 통해 공유


줄임표 및 기본 인수

함수는 줄임표(...) 또는 기본 인수 메서드 중 하나를 사용하여 함수 정의에 지정된 것보다 적은 인수를 받도록 선언할 수 있습니다.

줄임표는 선언에 인수가 필요할 수 있지만 숫자와 형식은 지정되지 않음을 나타냅니다. 이는 C++의 장점인 형식 안전성을 없애기 때문에 일반적으로 좋지 않은 C++ 프로그래밍 관행입니다. 형식 및 실제 인수 형식을 보여 주는 함수보다는 줄임표로 선언된 함수에 다양한 변환이 적용됩니다.

  • 실제 인수가 float 형식인 경우 해당 인수는 함수 호출 전에 double 형식으로 승격됩니다.

  • signed/unsigned char, short, enumerated 형식 또는 비트 필드는 정수 계열 확장을 사용하여 signed/unsigned int로 변환됩니다.

  • 클래스 형식의 인수는 데이터 구조 값에 의해 전달됩니다. 사본은 클래스의 복사 생성자(있을 경우) 호출을 통해서가 아닌 이진 복사를 통해 만들어집니다.

줄임표를 사용할 경우 인수 목록 마지막에 선언해야 합니다. 인수의 가변 수 전달에 대한 자세한 내용은 런타임 라이브러리 참조에서 va_arg, va_start 및 va_list의 설명을 참조하십시오.

CLR 프로그래밍의 기본 인수에 대한 자세한 내용은 ... (가변 인수 목록)을 참조하십시오.

기본 인수를 사용하면 함수 호출에 아무것도 제공되지 않은 경우 인수가 가정하는 값을 지정할 수 있습니다. 다음 코드는 기본 인수의 작동 방법을 보여 줍니다. 기본 인수 지정 제한에 대한 자세한 내용은 기본 인수를 참조하십시오.

// expre_Ellipses_and_Default_Arguments.cpp
// compile with: /EHsc
#include <iostream>

// Declare the function print that prints a string,
// then a terminator.
void print( const char *string,
            const char *terminator = "\n" );

int main()
{
    print( "hello," );
    print( "world!" );

    print( "good morning", ", " );
    print( "sunshine." );
}

using namespace std;
// Define print.
void print( const char *string, const char *terminator )
{
    if( string != NULL )
        cout << string;

    if( terminator != NULL )
        cout << terminator;
}

앞의 프로그램은 두 개의 인수를 사용하는 print 함수를 선언합니다. 그러나 두 번째 인수 terminator의 기본값은 "\n"입니다. main에서 print에 대한 처음 두 개의 호출은 기본 두 번째 인수가 새 줄을 제공하여 인쇄된 문자열을 종료할 수 있도록 합니다. 세 번째 호출은 두 번째 인수에 대해 명시적 값을 지정합니다. 프로그램의 출력:

hello,
world!
good morning, sunshine.

참고 항목

참조

줄임표(...)