Maison  >  Article  >  développement back-end  >  Les arguments du constructeur et les variables membres peuvent-ils avoir des noms identiques ?

Les arguments du constructeur et les variables membres peuvent-ils avoir des noms identiques ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-23 07:00:28342parcourir

Can Constructor Arguments and Member Variables Have Identical Names?

Utilisation d'arguments de constructeur et de noms de variables membres identiques

Question :

Est-il permis de initialisez les variables membres en utilisant les mêmes noms que les arguments du constructeur, comme illustré dans ce qui suit code ?

class Blah {
    std::vector<int> vec;

public:
    Blah(std::vector<int> vec): vec(vec)
    {}
};

Réponse :

Oui, cette pratique est entièrement conforme à la norme C. Selon la section 12.6.2/7 de la norme :

Names in the expression-list of a mem-initializer are evaluated in the scope of the constructor for which the mem-initializer is specified.

Cela implique que dans la liste d'initialisation du constructeur, les variables membres peuvent être référencées en utilisant les mêmes noms que les arguments du constructeur. Ainsi, le code que vous avez fourni est à la fois légal et garanti de fonctionner correctement.

Informations supplémentaires :

  • Au sein du constructeur, le pointeur this peut être utilisé pour faites référence à l'objet en cours d'initialisation.
  • Il est recommandé d'utiliser des références const pour les arguments du constructeur afin d'éviter des erreurs inutiles. exemplaires.

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