Maison  >  Article  >  développement back-end  >  Comment les noms de classe dans les modèles de classe fonctionnent-ils sans paramètres de modèle ?

Comment les noms de classe dans les modèles de classe fonctionnent-ils sans paramètres de modèle ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 11:46:31411parcourir

How do Class Names in Class Templates Work Without Template Parameters?

Noms de classe dans les modèles de classe sans paramètres de modèle

Considérons un modèle de classe défini comme suit :

<code class="cpp">template <typename E>
class Link {
public:
    E element;
    Link* next;  // No typename argument here
};</code>

Le le code que vous avez fourni comporte ensuite un lien membre public* sans argument de nom de type. C'est ce qu'on appelle un « nom de classe injecté ».

Selon [temp.local], lorsque le nom de classe injecté est utilisé dans le cadre de la classe, il est équivalent au nom de classe suivi de crochets angulaires. contenant les paramètres du modèle de la classe. Dans ce cas, Link devient effectivement Link.

Par conséquent, l'expression Link* next au sein de la classe Link est équivalente à Link* next. Cette fonctionnalité pratique permet à la classe de se référencer en utilisant son nom complet sans spécifier explicitement les arguments du modèle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn