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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-09 11:18:07442parcourir

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

Initialisation des types intégrés par le constructeur par défaut

En C , le constructeur par défaut est implicitement défini par le compilateur pour les classes qui le font pas de constructeur explicitement déclaré. Ce constructeur par défaut implicite initialise-t-il automatiquement les membres des types intégrés ?

Réponse

Non, le constructeur par défaut implicitement défini n'initialise pas les membres des types intégrés. Cependant, il est important de noter que les instances de classe peuvent être initialisées d'autres manières.

Value-Initialization vs. Default Constructor

Généralement, la syntaxe C() est supposée pour appeler le constructeur par défaut. Cependant, dans certains cas, il effectue à la place une initialisation de la valeur. Cela se produit si un constructeur par défaut déclaré par l'utilisateur n'existe pas. L'initialisation de la valeur initialise directement chaque membre de la classe, ce qui entraîne une initialisation nulle pour les types intégrés.

Par exemple :

class C {
public:
  int x;
};

Si aucun constructeur déclaré par l'utilisateur n'est défini, C() utilisera l'initialisation de la valeur :

C c;
// c.x contains garbage

Explicite Initialisation de valeur

L'initialisation de valeur explicite à l'aide de (), comme le montre le code suivant, initialisera x à zéro :

C c = C();
// c.x == 0

C *pc = new C();
// pc->x == 0

Initialisation d'agrégat

L'initialisation globale peut également initialiser les membres de la classe sans utiliser de constructor :

C c = {}; // C++98
C d{}; // C++11
// c.x == 0, d.x == 0

Par conséquent, bien que le constructeur par défaut n'initialise pas les types de membres intégrés, des méthodes d'initialisation alternatives existent en C .

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