Maison >développement back-end >C++ >Le constructeur par défaut de C initialise-t-il les membres de type intégrés ?

Le constructeur par défaut de C initialise-t-il les membres de type intégrés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-14 03:34:09729parcourir

Does C  's Default Constructor Initialize Built-in Type Members?

Comportement des constructeurs par défaut avec les types intégrés

Question :

Les constructeurs par défaut, générés automatiquement par le compilateur, initialiser les types intégrés en C ?

Réponse :

Non, le constructeur par défaut (créé par le compilateur pour les classes sans constructeurs définis par l'utilisateur) n'initialise pas les membres des types intégrés.

Cependant, il est important de noter qu'il existe d'autres mécanismes d'initialisation des instances de classe qui n'impliquent pas la valeur par défaut constructor :

  • Value-initialization : La syntaxe C() (lorsqu'aucun constructeur déclaré par l'utilisateur n'est disponible) effectue une initialisation de valeur, qui initialise à zéro les types intégrés.
  • Initialisation de l'agrégat : La syntaxe C {} ou C{} ; initialise tous les membres d'une classe sans invoquer aucun constructeur.

Exemple :

Considérons la classe suivante :

class C {
public:
  int x;
};

Le compilateur -le constructeur par défaut fourni pour C ne s'initialisera pas C::x.

C c; // Compiler-provided default constructor is used
// c.x contains garbage

En revanche, l'utilisation de l'initialisation par valeur ou de l'initialisation globale initialisera C::x:

C c = C(); // Uses value-initialization instead of default constructor
            // c.x == 0

C d{}; // Aggregate initialization
       // d.x == 0

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