Maison > Article > développement back-end > Pouvez-vous passer un objet à son propre constructeur en 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!