Maison > développement back-end > C++ > Le C initialise-t-il implicitement les types intégrés dans les constructeurs par défaut ?

Le C initialise-t-il implicitement les types intégrés dans les constructeurs par défaut ?

Linda Hamilton
Libérer: 2024-12-06 09:55:14
original
540 Les gens l'ont consulté

Does C   Implicitly Initialize Built-in Types in Default Constructors?

Le constructeur implicite par défaut initialise-t-il les types intégrés ?

Bien que les constructeurs par défaut générés par le compilateur soient responsables de l'initialisation des membres des classes, cette règle ne s'applique pas aux types intégrés. Les constructeurs par défaut implicites laissent les membres de type intégrés non initialisés.

Cependant, il existe des mécanismes alternatifs pour initialiser les instances de classe.

Initialisation de la valeur

La syntaxe C() peut sembler invoquer le constructeur par défaut, mais en réalité, il effectue l'initialisation des valeurs, qui :

  • Déclenche uniquement le constructeur par défaut déclaré par l'utilisateur s'il est présent.
  • Pour les classes sans constructeurs déclarés par l'utilisateur, il ignore le constructeur par défaut.
  • Valeur directe -l'initialisation des types intégrés entraîne initialisation zéro.

Exemple :

class C { public: int x; };
C c; // Compiler-generated default constructor used, x retains garbage
Copier après la connexion

Initialisation explicite

L'initialiseur explicit () explicitement déclenche l'initialisation de la valeur pour les types intégrés et déclarés par l'utilisateur constructeurs.

C c = C(); // Value initialization used, x is zero-initialized
C *pc = new C(); // Value initialization used, pc->x is zero-initialized
Copier après la connexion

Initialisation d'agrégat

L'initialisation d'agrégat initialise également les instances de classe sans impliquer les constructeurs.

C c = {}; // x is zero-initialized
C d{}; // C++11 aggregate initialization, x is zero-initialized
Copier après la connexion

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