Heim >Backend-Entwicklung >C++ >Elementinitialisiererliste vs. Konstruktorzuweisung: Wann sollten Sie welche verwenden?

Elementinitialisiererliste vs. Konstruktorzuweisung: Wann sollten Sie welche verwenden?

Barbara Streisand
Barbara StreisandOriginal
2024-12-14 14:24:15385Durchsuche

Member Initializer List vs. Constructor Assignment: When Should You Use Which?

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:

  • Konstante Mitglieder
  • Referenzen (keine Zeiger)
  • Basisklassenmitglieder (Parameter für die Basisklasse Konstruktor)

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:

  • So initialisieren Sie konstante Mitglieder
  • So initialisieren Sie Referenzen
  • Um Argumente an Basisklassenkonstruktoren zu übergeben

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn