Heim >Backend-Entwicklung >C++ >Elementinitialisiererliste vs. Zuweisung in C-Konstruktoren: Wann sollte ich welche verwenden?
Initialisierungsliste vs. Zuweisung im Konstruktor
In C gibt es zwei gängige Ansätze zum Initialisieren von Klassenmitgliedern in einem Konstruktor: die Verwendung eines Mitglieds Initialisierungsliste oder Zuweisen von Werten direkt im Konstruktor. Obwohl syntaktisch unterschiedlich, kann es geringfügige Unterschiede bei der Codegenerierung und den Verwendungsszenarien geben.
Mitgliedsinitialisiererliste
Eine Mitgliederinitialisiererliste ist eine durch Kommas getrennte Liste von Mitgliedsinitialisierungen das im Konstruktor nach dem Doppelpunkt (:) platziert wird. In dem von Ihnen bereitgestellten Beispiel:
MyClass::MyClass(): _capacity(15), _data(NULL), _len(0) { }
Dadurch werden die drei Mitgliedsvariablen _capacity, _data und _len mit den angegebenen Werten initialisiert. Diese Syntax wird für die Initialisierung konstanter Mitglieder, Referenzen und Basisklassenkonstruktoren bevorzugt.
Zuweisung im Konstruktor
Im alternativen Ansatz können Sie den darin enthaltenen Mitgliedsvariablen Werte zuweisen der Konstruktorkörper:
MyClass::MyClass() { _capacity=15; _data=NULL; _len=0 }
Diese Syntax wird häufiger zum Initialisieren nicht konstanter Elemente verwendet Variablen.
Codegenerierung und -optimierung
Der Compiler generiert normalerweise optimierten Code für beide Ansätze. In den meisten Fällen ist der resultierende Assemblercode identisch. In seltenen Fällen kann die Verwendung der Elementinitialisiererliste jedoch zu effizienterem Code beim Initialisieren konstanter Elemente oder beim Festlegen von Standardwerten führen.
Verwendungsszenarien
Wie oben erwähnt , ist die Member-Initialisierungsliste zum Initialisieren konstanter Member, Referenzen und Basisklassenkonstruktoren erforderlich. Für andere Mitgliedsvariablen ist jeder Ansatz akzeptabel. Es gilt jedoch als bewährte Methode, die Mitgliedsinitialisiererliste zum Initialisieren von Mitgliedsvariablen zu verwenden, die nicht triviale Konstruktions- oder Initialisierungsanforderungen haben.
Im speziellen Fall Ihres Beispiels verwenden Sie die Mitgliedsinitialisiererliste oder weisen Werte in zu Der Konstruktor macht praktisch keinen Unterschied.
Das obige ist der detaillierte Inhalt vonElementinitialisiererliste vs. Zuweisung in C-Konstruktoren: Wann sollte ich welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!