Heim >Backend-Entwicklung >C++ >Elementinitialisiererliste vs. Konstruktorzuweisungen: Wann sollten Sie welche verwenden?
Initialisierungsliste vs. Konstruktorzuweisungen: Interne Unterschiede
Beim Initialisieren von Klassenmitgliedern kann man wählen, ob man entweder eine Mitgliederinitialisiererliste verwenden oder Werte zuweisen möchte innerhalb des Konstruktorkörpers. Intern weisen diese Ansätze subtile Unterschiede auf.
Mitgliedsinitialisiererliste
Verwendung einer Mitgliederinitialisiererliste, wie in diesem Beispiel zu sehen:
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { }
Initialisiert Mitgliedsvariablen direkt vor dem Betreten des Konstruktorkörpers. Dies ist besonders nützlich für:
Konstruktorzuweisungen
Auf der anderen Seite ist das Zuweisen von Werten innerhalb der Konstruktorkörper, wie in diesem Beispiel:
MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 }
führt die Initialisierung während der Konstruktorausführung durch. Dieser Ansatz wird üblicherweise für nicht konstante Mitglieder und Mitglieder verwendet, die basierend auf den Parametern des Konstruktors initialisiert werden können.
Vergleich des generierten Codes
Im Allgemeinen generieren beide Ansätze ähnliches Code. Bei konstanten Membern oder Referenzen kann jedoch nur eine Member-Initialisiererliste diese initialisieren, da Konstruktorzuweisungen zu Kompilierungsfehlern führen würden.
Das obige ist der detaillierte Inhalt vonElementinitialisiererliste vs. Konstruktorzuweisungen: Wann sollten Sie welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!