Heim >Backend-Entwicklung >C++ >Wie initialisiert C nichtstatische Datenelemente?
Initialisierungsreihenfolge nicht statischer Datenelemente
In C wird beim Initialisieren eines Objekts die Reihenfolge der Initialisierung nicht statischer Datenelemente festgelegt gibt Anlass zur Sorge. Um diese Reihenfolge zu verstehen, ist es wichtig, den entsprechenden Abschnitt des C-Standards zu lesen.
Gemäß 12.6.2 des C-Standards werden nicht statische Datenelemente in der Reihenfolge initialisiert, in der sie in der Klassendefinition erscheinen . Dies gilt unabhängig von der Reihenfolge, in der die Mitgliederinitialisiererlisten im Klassenkörper angezeigt werden.
Betrachten Sie das folgende Beispiel:
class A {}; class B {}; class X { A a; B b; };
In Klasse X ist die Reihenfolge der Initialisierung A, gefolgt von B Dies liegt daran, dass A in der Klassendefinition vor B deklariert wird. Es spielt keine Rolle, ob die Reihenfolge der Member-Initialisierungslisten im Konstruktor unterschiedlich war.
Diese Initialisierungsreihenfolge stellt sicher, dass Basisklassen und Member-Unterobjekte in der umgekehrten Reihenfolge der Initialisierung zerstört werden. Daher würde B im obigen Beispiel vor A zerstört werden.
Das obige ist der detaillierte Inhalt vonWie initialisiert C nichtstatische Datenelemente?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!