Maison >développement back-end >C++ >Qu'est-ce qu'un nom de classe injecté et comment son utilisation a-t-elle évolué ?

Qu'est-ce qu'un nom de classe injecté et comment son utilisation a-t-elle évolué ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-23 19:03:15184parcourir

What is an Injected Class Name and How Has Its Use Evolved?

Nom de classe injecté : objectif et évolution historique

La notion de nom de classe injecté fait référence à la déclaration implicite d'une classe au sein de sa propre portée. Cela permet au nom de classe d'être utilisé dans le corps de la classe pour faire référence à la classe elle-même, même en présence d'autres entités portant le même nom dans la portée englobante.

Objectif du nom de classe injecté

Le nom de classe injecté sert à plusieurs fins pratiques, notamment :

  • Ambiguïté Résolution : Il lève l'ambiguïté entre les références à la classe et d'autres entités portant le même nom dans la portée englobante. Ceci est particulièrement important pour les membres de classe et les fonctions membres qui partagent le même nom que la classe.
  • Commodité dans les modèles de classe : Il permet d'utiliser le nom de la classe dans le modèle sans spécifier le liste d'arguments de modèle, simplifiant le code.

Introduction historique

Le concept d'un nom de classe injecté existait sous une forme avant même C . L'ARM (Ada Reference Manual) précisait que le nom de classe pouvait être utilisé dans le spécificateur de classe pour faire référence à la classe elle-même.

En C 98, le nom de classe injecté était implicitement inséré dans la portée de la classe. Cependant, la terminologie « nom de classe injecté » a été introduite en C 03 avec DR 147.

Exemple de cas d'utilisation

Considérez la classe suivante :

class X {
public:
  static X create() { return X(); }
};

Sans le nom de classe injecté, il ne serait pas clair si create() crée un objet X temporaire ou appelle la fonction X. Le Le nom de classe injecté garantit que dans le corps de X, le nom X fait toujours référence à la classe elle-même, levant ainsi l'ambiguïté de l'intention de create().

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