C++: Initialisierungs-Reihenfolge der Klassen-Daten-Mitglieder
In den folgenden code, wenn der ctor von X
aufgerufen wird, wird der ctor von A
oder B
zuerst aufgerufen werden? Wird die Reihenfolge, in der Sie sich befinden, in den Körper von der Klasse control diese? Wenn jemand ein text-snippet aus der C++ - standard, dass die Gespräche über dieses Thema, wäre das perfekt.
class A {};
class B {};
class X
{
A a;
B b;
};
InformationsquelleAutor Nikhil | 2010-04-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Reihenfolge ist die Reihenfolge in der definition der Klasse - das ist aus Abschnitt 12.6.2 der C++ - Standard:
Das Rennen ist nicht immer zu den swift. Außer wenn es ist.
Ich hatte zu warten, um die Antwort akzeptieren für 7 Minuten, nachdem es veröffentlicht wurde, es ging so schnell. Wusste nicht, SO hatte dieser Beschränkung auf die Annahme von Antworten.
InformationsquelleAutor
Initialisierung ist immer in der Reihenfolge, in der die Schüler in Ihrer Klasse definition, also in deinem Beispiel
a
, dannb
.Es ist ein Sequenz-Punkt zwischen der Initialisierung jedes Mitglied, und Sie kann übergeben Sie einen Verweis auf eine noch nicht initialisiert Mitglied in den Konstruktor einer Klasse, aber Sie würden nur in der Lage sein, es zu benutzen, die in begrenzten Möglichkeiten (wie z.B. Ihre Adresse, um die form eines Zeigers), andere Nutzungen können auch dazu führen Undefiniertes Verhalten.
Zerstörung von class-member immer geschieht in umgekehrter Reihenfolge wie der Bau.
Reihenfolge der Initialisierung der Datenbanken und Mitglieder definiert ist 12.6.2 [Klasse.base.init]/5.
Um diese Erweiterung, wenn Sie einen Konstruktor für X-so - X(): b(), a() {} ist immer noch erst initialisiert.
Ich weiß das. Ich Frage für einen Verweis. Ich selbstbewusst gesagt, dies für jemanden, der bat um eine Referenz konnte ich nicht finden. Daher die Frage.
Ich war nur die überprüfung der para-Nummer. Nun Hinzugefügt.
Wenn man dies weiß, warum dann die Frage? Warum nicht einfach Fragen Sie nach einer Referenz anstatt zu Fragen, über etwas, dass Sie bereits wissen, wie gut?
InformationsquelleAutor CB Bailey