Heim > Backend-Entwicklung > C++ > Wie garantiere ich die Initialisierungsreihenfolge in C-Mitgliedsinitialisiererlisten?

Wie garantiere ich die Initialisierungsreihenfolge in C-Mitgliedsinitialisiererlisten?

Susan Sarandon
Freigeben: 2024-12-14 09:12:12
Original
792 Leute haben es durchsucht

How to Guarantee Initialization Order in C   Member Initializer Lists?

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

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!

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