클래스 템플릿의 기본 인수
클래스 템플릿 매개 변수 형식 또는 값에 대 한 기본 인수를 가질 수 있습니다.기본 인수를 같음으로 지정 (=) 기호 뒤에 형식 이름이 나 값으로.여러 템플릿 인수에 대 한 모든 인수를 첫 번째 기본 인수 후 기본 인수가 있어야 합니다.기본 인수를 사용 하는 템플릿 클래스 개체를 선언 하는 경우 기본 인수를 사용 하는 인수를 생략 합니다.기본이 아닌 인수가 없으면 빈 꺾쇠 괄호를 생략 하지 마십시오.
여러 번 선언 하는 템플릿을 기본 인수가 두 번 이상 지정할 수 없습니다.다음 코드는 오류를 보여 줍니다.
template <class T = long> class A;
template <class T = long> class A { /* . . . */ }; // Generates C4348.
예제
다음 예제에서는 기본 형식으로는 배열 클래스 템플릿을 정의 됩니다 int 배열 요소 및 크기를 지정 하는 템플릿 매개 변수에 대 한 기본값입니다.
// template_default_arg.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;
template <class T = int, int size = 10> class Array
{
T* array;
public:
Array()
{
array = new T[size];
memset(array, 0, size * sizeof(T));
}
T& operator[](int i)
{
return *(array + i);
}
const int Length() { return size; }
void print()
{
for (int i = 0; i < size; i++)
{
cout << (*this)[i] << " ";
}
cout << endl;
}
};
int main()
{
// Explicitly specify the template arguments:
Array<char, 26> ac;
for (int i = 0; i < ac.Length(); i++)
{
ac[i] = 'A' + i;
}
ac.print();
// Accept the default template arguments:
Array<> a; // You must include the angle brackets.
for (int i = 0; i < a.Length(); i++)
{
a[i] = i*10;
}
a.print();
}