initializer lists c
Entdecken Sie alles über Initialisierungslisten in C ++ mit detaillierten Beispielen.
C ++ verwendet Initialisierungslisten, um die Datenelemente auf ihre Werte zu initialisieren.
Initialisierungslisten werden meist in bestimmten Situationen verwendet, in denen es nicht möglich ist, die Werte im Konstruktorkörper zu initialisieren.
bestes Programm zur Überwachung der CPU-Temperatur
=> Klicken Sie hier für den kostenlosen C ++ - Kurs.
Initialisierungslisten in C ++
Die allgemeine Syntax der Initializer-Liste lautet:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Einige dieser Situationen, in denen die Initialisierungslisten verwendet werden, sind nachstehend aufgeführt:
# 1) Für die Mitgliedsobjektklasse wird kein Standardkonstruktor bereitgestellt.
Wenn wir ein anderes Klassenobjekt als Mitglied der Klasse haben und die Klasse dieses Objekts keinen Standardkonstruktor hat, initialisieren wir dieses Datenelementobjekt mithilfe der Initialisierungsliste.
Dies wird im folgenden Programm gezeigt.
#include using namespace std; class A { int i; public: A(int ); }; A::A(int val) { i = val; cout << 'Constructor ::A ; i = ' << i << endl; } class B { A a; public: B(int ); }; B::B(int val):a(val) { cout << 'Constructor :: B'; } int main() { B obj(10); return 0; }
Ausgabe:
Konstruktor :: A; i = 10
Konstruktor :: B.
Im obigen Programm ist das Objekt der Klasse A ein Datenelement der Klasse B. In der Klasse A haben wir einen parametrisierten Konstruktor, aber keinen Standardkonstruktor. Daher müssen wir die Initialisierungsliste in Klasse B verwenden, um ein Objekt der Klasse A zu erstellen.
# 2) Initialisieren von C. unsere Datenmitglieder.
Da const-Datenelemente nur einmal initialisiert werden können, initialisieren wir sie mithilfe der Initialisierungsliste.
Wir demonstrieren dies anhand des folgenden Beispiels.
#include using namespace std; class sample { private: const int val; public: sample(int val):val(val) { cout << 'Value is ' << val; } }; int main() { sample obj(10); }
Ausgabe:
Wert ist 10
Im obigen Programm haben wir eine Konstante als Datenelement. Wenn wir dieses const-Element mit einem Wert initialisieren müssen, verwenden wir die Initialisierungsliste wie gezeigt.
# 3) Zum Initialisieren von Referenzdatentypen.
Wie Konstanten sind Referenzen unveränderlich. Wenn wir also die Datenelemente des Referenztyps initialisieren müssen, verwenden wir Initialisierungslisten.
Im folgenden Programm initialisieren wir das Referenzdatenelement mithilfe der Initialisierungsliste.
#include using namespace std; class sample { private: int &ref_val; public: sample(int &ref_val):ref_val(ref_val) { cout << 'Value is ' << ref_val; } }; int main() { int ref=10; sample obj(ref); return 0; }
Ausgabe:
Wert ist 10
In diesem Programm haben wir eine Referenz als Datenelement und initialisieren sie mithilfe der Initialisierungsliste.
# 4) Wenn Mitgliedsname und Parameter den gleichen Namen haben.
wie man eine swf datei benutzt
Wenn Mitgliedsnamen einer Klasse mit den Parametern initialisiert werden sollen und diese Parameter dieselben Namen wie Mitgliedsnamen haben, verwenden wir die Initialisierungsliste. In unseren vorherigen Themen haben wir diesen Zeiger für dieselbe Situation verwendet. Die zweite Option ist die Initialisierungsliste.
Wir haben das obige Beispiel mit diesem Zeiger geändert, um die Initialisiererliste im folgenden Programm zu verwenden.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Ausgabe:
num = 100
ch = A.

In diesem Programm übergeben wir Parameter, um die gleichnamigen Datenelemente zu initialisieren. In diesem Fall verwenden wir zu diesem Zweck die Initialisierungsliste.
# 5) Um die Leistung zu verbessern
Jedes Mal, wenn wir die Datenelemente im Hauptteil des Konstruktors initialisieren, wird beim Zuweisen von Werten ein temporäres Objekt für das Datenelement erstellt. Sobald die Zuordnung abgeschlossen ist, wird dieses temporäre Objekt gelöscht. Dies ist eigentlich ein Overhead.
Wenn wir dagegen die Initialisierungsliste verwenden, wird ein Kopierkonstruktor zum Zuweisen von Werten verwendet. Dies verbessert die Leistung erheblich.
Fazit
Daher haben wir in diesem Tutorial die Initialisierungslisten sowie viele Situationen kennengelernt, in denen wir sie in der C ++ - Programmierung verwenden müssen.
Obwohl wir die Initialisierungsliste nicht verwenden müssen, wenn diese Situationen nicht vorliegen, können wir sie immer verwenden, um die Programmleistung zu verbessern.
In unserem nächsten Tutorial werden wir die Funktionen von Freunden in C ++ ausführlich besprechen.
=> Hier finden Sie Informationen zur vollständigen Liste der C ++ - Tutorials.
Literatur-Empfehlungen