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
Libérer: 2024-12-09 11:18:07
original
443 Les gens l'ont consulté

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;
};
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal