Eingehende Analyse von Initialisierungstechniken in Konstruktoren
Betrachten Sie den folgenden Code:
MyClass::MyClass() : _capacity(15), _data(NULL), _len(0) {}
Versus:
MyClass::MyClass() { _capacity = 15; _data = NULL; _len = 0; }
Es ist wichtig zu beachten, dass die Wahl zwischen der Verwendung einer Initialisierungsliste und der Zuweisung Werte in einem Konstruktor hängen von den spezifischen Anforderungen der Member-Initialisierung ab.
Member-Initialisierungsliste
Eine Initialisierungsliste wird verwendet, um alle Mitglieder des aktuellen Objekts bei seiner Konstruktion zu initialisieren . Dies wird normalerweise für mehrere Szenarios empfohlen:
Im bereitgestellten Beispiel, in dem _capacity, _data und _len keine konstanten Mitglieder oder Referenzen sind, sind beide Ansätze gültig und führen zu äquivalentem intern generiertem Code. Wenn jedoch eines dieser Mitglieder eine Konstante oder eine Referenz wäre, wäre die Initialisierungsliste erforderlich.
Regelmäßige Zuweisungen vs. Initialisierungsliste
Während reguläre Zuweisungen innerhalb des Konstruktors werden im Allgemeinen für nicht konstante Mitgliedsvariablen als akzeptabel angesehen, sie haben jedoch einige Nachteile:
Fazit
Die Verwendung einer Initialisierungsliste wird zum Initialisieren von Konstantenmitgliedern, Referenzen und der Übergabe von Parametern empfohlen Basisklassenkonstruktoren. Für reguläre Mitgliedsvariablen sind reguläre Zuweisungsanweisungen möglicherweise besser geeignet, die Initialisierungsliste bietet jedoch immer noch einen präziseren und genaueren Ansatz.
Das obige ist der detaillierte Inhalt vonInitialisierungslisten vs. Zuweisungen in Konstruktoren: Wann sollten Sie welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!