Heim >Backend-Entwicklung >C++ >Elementinitialisiererliste vs. Konstruktorzuweisung: Wann sollten Sie welche verwenden?
Initialisierungsliste vs. Konstruktorzuweisungen: Interne und Code-Unterschiede
Im angegebenen C-Code gibt es eine Frage bezüglich der Unterschiede zwischen der Verwendung von a Member-Initialisiererliste und Zuweisen von Werten in einem Konstruktor.
Member-Initialisierer Liste
Die Mitgliedsinitialisiererliste, in Klammern nach dem Konstruktornamen eingeschlossen, wird zum Initialisieren verwendet:
Konstruktorzuweisungen
Konstruktorzuweisungen hingegen werden verwendet, um nicht konstante Elemente zu initialisieren und Nicht-Referenzvariablen Werte zuzuweisen.
Intern Unterschiede
Intern unterscheidet sich der generierte Code zwischen den beiden Ansätzen geringfügig. Bei Verwendung einer Elementinitialisiererliste platziert der Compiler die Elementwerte während der Erstellung direkt im Klassenobjekt. Dadurch werden zusätzliche Zuweisungsvorgänge vermieden.
Code-Unterschiede
Vergleich der angegebenen Code-Snippets:
MyClass::MyClass() : _capacity(15), _data(NULL), _len(0) { }
MyClass::MyClass() { _capacity = 15; _data = NULL; _len = 0; }
Beide Snippets initialisieren die drei private Mitglieder _capacity, _data und _len mit den angegebenen Werten. Das erste Snippet verwendet jedoch eine Member-Initialisierungsliste, während das zweite Snippet Konstruktorzuweisungen verwendet.
Wann werden Member-Initialisierungslisten verwendet?
Initialisierungslisten müssen verwendet werden:
Für die Standardinitialisierung (nicht konstante Mitglieder, keine Referenzen) kann jeder Ansatz verwendet werden. Im Allgemeinen werden Mitgliederinitialisiererlisten aus Effizienzgründen bevorzugt.
Das obige ist der detaillierte Inhalt vonElementinitialisiererliste vs. Konstruktorzuweisung: Wann sollten Sie welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!