Maison >développement back-end >C++ >Pourquoi les noms de classes injectés sont-ils nécessaires en C ?
Noms de classe injectés en C : dévoiler leur objectif
En C, un nom de classe injecté fait référence au phénomène où le nom d'une classe est injecté dans son propre périmètre. Cette fonctionnalité soulève des questions sur sa nécessité et ses origines.
Objectif des noms de classe injectés
Le nom de classe injecté garantit que dans le corps de la classe, le nom de classe fait toujours référence à la classe actuelle, même si une autre classe portant le même nom est déclarée dans la portée englobante. Prenons l'exemple suivant :
void X() { } class X { public: static X create() { return X(); } };
Dans le code ci-dessus, le but du nom de classe injecté est de faire la distinction entre la création d'un objet X temporaire et l'appel de la fonction X. Au niveau de l'espace de noms, la fonction create() appellerait la fonction X, tandis que dans le corps de la classe, le nom de classe injecté garantit qu'il fait référence à la classe elle-même.
Signification dans les modèles de classe
Les noms de classe injectés sont également utiles dans les modèles de classe. Ils permettent d'utiliser le nom de la classe sans spécifier de liste d'arguments de modèle, ce qui facilite la référence à l'instanciation actuelle. Par exemple, au lieu d'utiliser Foo
Introduction et terminologie
Le concept de noms de classe injectés existait dans C 98, mais la terminologie a été introduite dans C 03. C 98 y faisait référence comme "l'insertion d'un nom de classe dans la portée de la classe elle-même. » C 03 a inventé le terme « nom de classe injecté ».
Conclusion
Les noms de classe injectés sont une fonctionnalité précieuse en C qui garantit la recherche de noms propres dans les classes et simplifie syntaxe pour les modèles de classe. Comprendre leur objectif et leur évolution historique améliore la maîtrise de la programmation C.
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!