共用方式為


類別樣板的預設引數

類別樣板的類型或值參數可以有預設引數。 請使用等號 (=) 指定預設引數,後面接著類型名稱或值。 若有多個樣板引數,則第一個預設引數之後的所有引數都必須有預設引數。 當宣告具有預設引數的樣板類別物件時,請省略引數以接受預設引數。 如果沒有非預設的引數,請不要省略空的角括號。

多次宣告的樣板不可指定預設引數超過一次。 下列程式碼是錯誤的示範:

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();
}
  

請參閱

參考

預設引數