Initialisierung integrierter Typen durch den Standardkonstruktor
In C wird der Standardkonstruktor implizit vom Compiler für Klassen definiert, die dies tun keinen explizit deklarierten Konstruktor haben. Initialisiert dieser implizite Standardkonstruktor automatisch Mitglieder integrierter Typen?
Antwort
Nein, der implizit definierte Standardkonstruktor initialisiert keine Mitglieder integrierter Typen. Es ist jedoch wichtig zu beachten, dass Klasseninstanzen auf andere Weise initialisiert werden können.
Wertinitialisierung vs. Standardkonstruktor
Üblicherweise wird die Syntax C() angenommen um den Standardkonstruktor aufzurufen. In bestimmten Fällen wird jedoch stattdessen eine Wertinitialisierung durchgeführt. Dies tritt auf, wenn kein vom Benutzer deklarierter Standardkonstruktor vorhanden ist. Durch die Wertinitialisierung wird jedes Klassenmitglied direkt initialisiert, was zu einer Nullinitialisierung für integrierte Typen führt.
Zum Beispiel:
class C { public: int x; };
Wenn kein vom Benutzer deklarierter Konstruktor definiert ist, C() wird die Wertinitialisierung verwenden:
C c; // c.x contains garbage
Explizit Wertinitialisierung
Explizite Wertinitialisierung mit (), wie im folgenden Code zu sehen ist, initialisiert x auf Null:
C c = C(); // c.x == 0 C *pc = new C(); // pc->x == 0
Aggregatinitialisierung
Die aggregierte Initialisierung kann auch Klassenmitglieder initialisieren, ohne a zu verwenden Konstruktor:
C c = {}; // C++98 C d{}; // C++11 // c.x == 0, d.x == 0
Während der Standardkonstruktor integrierte Mitgliedstypen nicht initialisiert, gibt es in C alternative Initialisierungsmethoden.
Das obige ist der detaillierte Inhalt vonInitialisiert der implizite Standardkonstruktor von C integrierte Typmitglieder?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!