줄임표 및 기본 인수
함수는 줄임표(...) 또는 기본 인수 메서드 중 하나를 사용하여 함수 정의에 지정된 것보다 적은 인수를 받도록 선언할 수 있습니다.
줄임표는 선언에 인수가 필요할 수 있지만 숫자와 형식은 지정되지 않음을 나타냅니다. 이는 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.