Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Der Ausdruck "Membervorlage" bezieht sich auf Memberfunktionsvorlagen und geschachtelte Klassenvorlagen. Memberfunktionsvorlagen sind Funktionsvorlagen, die Member einer Klasse oder Klassenvorlage sind.
Memberfunktionen können in mehreren Kontexten Funktionsvorlagen sein. Alle Funktionen von Klassenvorlagen sind generisch, werden jedoch nicht als Membervorlagen oder Memberfunktionsvorlagen bezeichnet. Wenn diese Memberfunktionen eigene Vorlagenargumente verwenden, gelten sie als Memberfunktionsvorlagen.
Beispiel: Deklarieren von Memberfunktionsvorlagen
Memberfunktionsvorlagen von Nicht-Vorlagenklassen oder Klassenvorlagen werden als Funktionsvorlagen mit ihren Vorlagenparametern deklariert.
// member_function_templates.cpp
struct X
{
template <class T> void mf(T* t) {}
};
int main()
{
int i;
X* x = new X();
x->mf(&i);
}
Beispiel: Memberfunktionsvorlage einer Klassenvorlage
Das folgende Beispiel zeigt eine Memberfunktionsvorlage einer Klassenvorlage.
// member_function_templates2.cpp
template<typename T>
class X
{
public:
template<typename U>
void mf(const U &u)
{
}
};
int main()
{
}
Beispiel: Definieren von Membervorlagen außerhalb der Klasse
// 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()
{
}
Beispiel: Benutzerdefinierte Vorlagenkonvertierung
Lokale Klassen dürfen keine Membervorlagen haben.
Memberfunktionsvorlagen können keine virtuellen Funktionen sein. Und sie können virtuelle Funktionen nicht aus einer Basisklasse außer Kraft setzen, wenn sie mit demselben Namen wie eine virtuelle Basisklasse deklariert werden.
Das folgende Beispiel zeigt eine benutzerdefinierte Vorlagenkonvertierung:
// 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>.
}