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
Linda Hamiltonoriginal
2024-12-06 09:55:14550parcourir

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

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

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

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