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 :
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!