Heim > Backend-Entwicklung > C++ > Initialisiert der implizite Standardkonstruktor von C integrierte Typmitglieder?

Initialisiert der implizite Standardkonstruktor von C integrierte Typmitglieder?

Mary-Kate Olsen
Freigeben: 2024-12-09 11:18:07
Original
443 Leute haben es durchsucht

Does C  's Implicit Default Constructor Initialize Built-in Type Members?

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;
};
Nach dem Login kopieren

Wenn kein vom Benutzer deklarierter Konstruktor definiert ist, C() wird die Wertinitialisierung verwenden:

C c;
// c.x contains garbage
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage