Maison > développement back-end > C++ > le corps du texte

« Link* next » utilise-t-il le nom de classe injecté dans les modèles C ?

DDD
Libérer: 2024-11-02 22:18:30
original
753 Les gens l'ont consulté

Does `Link* next` Use the Injected Class Name in C   Templates?

Utilisation du nom de classe dans un modèle de classe sans paramètres de modèle

Considérez le code suivant tiré d'un livre C :

<code class="cpp">template <typename E> class Link {
    ...
    Link* next;  // this line may be confusing
    ...
};</code>
Copier après la connexion

Dans ce code, le membre next est déclaré sans spécifier l'argument de modèle E, ce qui soulève des inquiétudes quant à son exactitude. Ne devrait-il pas être Link* ensuite ?

Explication

Cela s'explique par le concept de « nom de classe injecté ». Conformément à la norme C [temp.local], lorsqu'il est utilisé sans argument de modèle, le nom de classe dans le modèle de classe est équivalent au nom de classe suivi des paramètres du modèle entourés de crochets angulaires. Par conséquent, dans ce cas, Link* est équivalent à Link*.

Cette règle est destinée à des fins pratiques, garantissant que le nom de classe au sein de la classe fait référence à la classe elle-même et non à une entité externe avec le même nom. Dans le cas des modèles de classe, il fournit une notation abrégée, en particulier lorsqu'il s'agit de listes d'arguments de modèles étendues.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal