Les types intégrés ont-ils des constructeurs ?
Lorsqu'un int temporaire est initialisé à 0, est-ce parce que int() appelle le constructeur par défaut ? Il s'agit d'une idée fausse courante, car les types intégrés n'ont pas de constructeurs.
Initialisation de valeur par rapport au constructeur par défaut
L'initialisation de valeur, un concept relativement récent, initialise un objet temporaire avec une valeur appropriée à son type. Pour les types intégrés, cette valeur est 0 pour les entiers.
Déclaration de TC PL
La section 10.4.2 de TC PL indique que les types intégrés ont également des valeurs par défaut constructeurs. Cependant, cette affirmation est sans doute incorrecte dans le contexte des C 98 et C 03.
Clarification de Bjarne Stroustrup
Lorsqu'il a été contacté personnellement, Bjarne Stroustrup a précisé qu'il considérait construit- dans les types pour avoir des constructeurs au sens conceptuel, malgré leur manque d'appels de constructeurs réels. Cette conceptualisation est basée sur leur comportement de type constructeur, tel que l'initialisation des valeurs.
Conclusion
Techniquement, les types intégrés n'ont pas de constructeurs. Cependant, la syntaxe utilisée pour les initialiser (par exemple, int{5}, int{}) est identique à celle des constructeurs. Par conséquent, pour des raisons pratiques, il est raisonnable de considérer les types intégrés comme ayant des constructeurs par défaut qui initialisent leurs valeurs de manière appropriée lors de l'initialisation des valeurs.
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!