Maison >développement back-end >C++ >Les constructeurs par défaut de C initialisent-ils les types intégrés ?
Les types intégrés sont-ils initialisés par le constructeur par défaut de C ?
En C , le constructeur par défaut implicite généré par le compilateur est responsable de l’initialisation des membres de la classe. Cependant, il existe une idée fausse courante selon laquelle ce comportement s'étend aux types intégrés.
Comportement d'initialisation par défaut
Le constructeur implicite par défaut ne pas initialise membres de types intégrés. Lorsqu'un tel constructeur est utilisé sans initialisation définie par l'utilisateur, les membres des types intégrés restent non initialisés.
Exceptions à la règle
Alors que les constructeurs par défaut ne le font généralement pas initialiser les types intégrés, il existe certaines circonstances dans lesquelles l'initialisation peut se produire :
Valeur Initialisation :
Dans C 03 et versions ultérieures, la syntaxe C() appelle l'initialisation de valeur pour les instances de classe. Si la classe n'a pas de constructeur déclaré par l'utilisateur, l'initialisation de la valeur initialisera à zéro les membres du type intégré.
Initialisation agrégée :
Syntaxe d'initialisation agrégée, telle que C c = {}, effectue l'initialisation sans utiliser de constructeur. Cela entraîne une initialisation nulle des membres de type intégrés.
Exemple :
Considérez la classe suivante sans constructeur déclaré par l'utilisateur :
class C { public: int x; };
Sans explicite Initialisation :
C c; // Compiler-provided default constructor used // c.x contains garbage
Avec initialisation de valeur explicite :
C c = C(); // Value-initialization used assert(c.x == 0);
Avec initialisation globale :
C c = {}; // Aggregate initialization assert(c.x == 0);
Il est important de noter que le comportement décrit ci-dessus peut varier en fonction de la version de C utilisée et de la classe spécifique. définition.
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!