Sdílet prostřednictvím


Argumenty výchozí šablony třídy

Třída šablony mohou mít argumenty výchozí typ nebo hodnotu parametrů.Určit výchozí argumenty, které rovná (=) znak a zadejte název nebo hodnotu.Všechny argumenty po první výchozí argument více argumentů, šablony, musí mít výchozí argumenty.Při deklarování třídy objektu šablonu s argumenty výchozí vynecháte argumenty přijměte výchozí argument.Pokud neexistují žádné argumenty nestandardní, není Vynechat prázdné lomených závorek.

Šablona, která je deklarována násobit nelze zadat více než jednou výchozí argument.Následující kód ukazuje chybu:

template <class T = long> class A;
template <class T = long> class A { /* . . . */ }; // Generates C4348.

Příklad

V následujícím příkladu je definován šablonu třídy array výchozího typu int pro prvek pole a výchozí hodnotu pro parametr šablony určující velikost.

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

Viz také

Referenční dokumentace

Výchozí argumenty