Initialisiert der implizite Standardkonstruktor integrierte Typen?
Während vom Compiler generierte Standardkonstruktoren für die Initialisierung von Klassenmitgliedern verantwortlich sind, gilt diese Regel gilt nicht für integrierte Typen. Implizite Standardkonstruktoren lassen integrierte Typmitglieder nicht initialisiert.
Es gibt jedoch alternative Mechanismen zum Initialisieren von Klasseninstanzen.
Wertinitialisierung
Die Syntax C() scheint den Standardkonstruktor aufzurufen, aber in Wirklichkeit führt es eine Wertinitialisierung durch. was:
Beispiel:
class C { public: int x; }; C c; // Compiler-generated default constructor used, x retains garbage
Explizite Initialisierung
Der explizite Initialisierer () explizit Löst die Wertinitialisierung sowohl für integrierte als auch vom Benutzer deklarierte Typen aus Konstruktoren.
C c = C(); // Value initialization used, x is zero-initialized C *pc = new C(); // Value initialization used, pc->x is zero-initialized
Aggregatinitialisierung
Aggregatinitialisierung initialisiert auch Klasseninstanzen ohne Einbeziehung von Konstruktoren.
C c = {}; // x is zero-initialized C d{}; // C++11 aggregate initialization, x is zero-initialized
Das obige ist der detaillierte Inhalt vonInitialisiert C implizit integrierte Typen in Standardkonstruktoren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!