Maison  >  Article  >  développement back-end  >  Pouvez-vous passer un objet à son propre constructeur en C ?

Pouvez-vous passer un objet à son propre constructeur en C ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 00:36:02565parcourir

Can You Pass an Object to Its Own Constructor in C  ?

Les objets peuvent-ils être transmis à leurs propres constructeurs ?

Question :

Dans un C constructeur de la classe, est-il acceptable de passer un objet comme argument à lui-même ?

Réponse :

Étonnamment, passer un objet dans son propre constructeur est autorisé par la norme C, bien qu'il semble non conventionnel. Ceci est expliqué par le rapport de défaut 363, qui indique qu'un objet non initialisé peut être utilisé pour lier des références et prendre des adresses.

Explication :

Section 3.8 du C 14 La norme précise qu'avant le début ou la fin de la durée de vie d'un objet, toute valeur gl faisant référence à l'objet peut être utilisée, mais uniquement à des fins limitées. Cela inclut la liaison de références et la prise d'adresses, qui ne dépendent pas de la valeur de l'objet.

En pratique, l'utilisation d'un objet non initialisé dans un constructeur peut conduire à des avertissements, comme le démontre l'avertissement de Clang concernant les variables "non initialisées". Cependant, ces avertissements n'indiquent pas un comportement indéfini puisqu'aucune valeur indéterminée n'est produite.

Un exemple qui entraîne un comportement indéfini est l'auto-initialisation avec une affectation, telle que "int x = x".

Conclusion :

Bien que passer des objets dans leurs propres constructeurs puisse sembler inhabituel, c'est une pratique valable sous le C standard, permettant des interactions limitées avec des objets non initialisés pendant le processus de construction.

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