Initialisierungsreihenfolge in Mitgliedsinitialisiererlisten
In C initialisieren Konstruktoren Mitgliedsvariablen häufig mithilfe einer Mitgliedsinitialisiererliste. Allerdings kann die Reihenfolge, in der diese Variablen initialisiert werden, verwirrend sein.
Betrachten Sie den folgenden Konstruktor:
class A { public: OtherClass a_; AnotherClass b_; A(OtherClass o, string x, int y) : a_(o) , b_(a_, x, y) {} };
Problem:
Ursprünglich Es wurde angenommen, dass die Variablen in der in der Initialisierungsliste aufgeführten Reihenfolge initialisiert wurden: a_ zuerst, dann b_. Es trat jedoch ein Problem auf, als sich herausstellte, dass die Variablen in umgekehrter Reihenfolge initialisiert wurden.
Frage:
Wie kann die Reihenfolge der Initialisierung gesteuert werden, um dies sicherzustellen? a_ wird vor b_ initialisiert?
Antwort:
Die Reihenfolge von Die Initialisierung hängt von der Reihenfolge der Datenelementdeklarationen in der Klasse ab. In diesem Beispiel wird a_ vor b_ deklariert, daher wird es zuerst initialisiert.
Um die gewünschte Reihenfolge der Initialisierung sicherzustellen, ist es daher wichtig, die Datenelemente in der richtigen Reihenfolge innerhalb der Klassendefinition zu deklarieren.
Das obige ist der detaillierte Inhalt vonWie garantiere ich die Initialisierungsreihenfolge in C-Mitgliedsinitialisiererlisten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!