Condividi tramite


Modelli di funzione membro

Il modello del membro del termine fa riferimento a entrambi i modelli di funzioni membro e ai modelli annidati della classe.I modelli di funzione membro sono funzioni del modello che sono membri del modello di classe o della classe.Per ulteriori informazioni, vedere Modelli annidati della classe.

Le funzioni membro possono essere template di funzione in molti contesti.Tutte le funzioni di template di classe sono generiche ma non sono definiti i modelli di membro o template di funzione membro.Se queste funzioni membro accettano i propri argomenti di modello, sono considerate template di funzione membro.Per ulteriori informazioni, vedere Funzioni membro delle classi modello.

Esempio

I modelli di funzione membro di non modello o le classi modello vengono dichiarati come template di funzione con i relativi parametri di modello.

// member_function_templates.cpp
struct X
{
   template <class T> void mf(T* t) {}
};

int main()
{
   int i;
   X* x = new X();
   x->mf(&i);
}

Nell'esempio seguente viene illustrato un modello di funzione membro di una classe modello.

// member_function_templates2.cpp
template<typename T>
class X
{
public:
   template<typename U>
   void mf(const U &u)
   {
   }
};

int main()
{
}

Inoltre, in Visual Studio. .NET 2003 e versioni successive, i modelli del membro possono essere definito esterno di una classe.

// defining_member_templates_outside_class.cpp
template<typename T>
class X
{
public:
   template<typename U>
   void mf(const U &u);
};

template<typename T> template <typename U>
void X<T>::mf(const U &u)
{
}

int main()
{
}

Le classi locali non sono consentite per sono disponibili modelli del membro.

Le funzioni del modello del membro non possono essere funzioni virtuali e non possono eseguire l'override delle funzioni virtuali da una classe base quando vengono dichiarati con lo stesso nome di una funzione virtuale della classe base.

Supporto di introdotto Visual C++ .NET 2003 le conversioni definite dall'utente basate su modelli.I seguenti funzionamento di esempio in Visual C++ .NET 2003 come specificato nello standard.

// templated_user_defined_conversions.cpp
template <class T>
struct S
{
   template <class U> operator S<U>()
   {
      return S<U>();
   }
};

int main()
{
   S<int> s1;
   S<long> s2 = s1;  // Convert s1 using UDC and copy constructs S<long>.
}

Vedere anche

Riferimenti

Modelli di funzione