initializer lists c
Utforska allt om initialiseringslistor i C ++ med exempel i detalj.
C ++ använder initialiseringslistor för att initialisera datamedlemmarna till sina värden.
Initialiseringslistor används mest i specifika situationer där det inte är möjligt att initialisera värdena i konstruktörens kropp.
vilken typ av test används för att verifiera att det nya systemet fungerar med faktiska data?
=> Klicka här för gratis C ++ kurs.
Initialiseringslistor i C ++
Den allmänna syntaxen för Initializer-listan är:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Några av dessa situationer där initialiseringslistorna används listas nedan:
# 1) En standardkonstruktör tillhandahålls inte för medlemsobjektklassen.
När vi har ett annat klassobjekt som medlem av klassen och klassen för det objektet inte har standardkonstruktör, initialiserar vi detta dataelementobjekt med initialiseringslistan.
Detta visas i följande program.
#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; }
Produktion:
Konstruktör :: A; jag = 10
Konstruktör :: B
I programmet ovan är objektet för klass A en datamedlem i klass B. I klass A har vi en parametrerad konstruktör men inte en standardkonstruktör. Således måste vi använda initialiseringslistan i klass B för att skapa klass A-objekt.
# 2) Initiera C våra datamedlemmar.
Eftersom medlemmar av const-data bara kan initialiseras en gång initialiserar vi dem med initialiseringslistan.
Vi visar detta med hjälp av följande exempel.
#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); }
Produktion:
Värde är 10
I programmet ovan har vi en const som datamedlem. Om vi måste initiera denna const-medlem till ett värde, gör vi det med initialiseringslistan som visas.
# 3) För initialisering av referensdatatyper.
Liksom konstanter är referenser oföränderliga. Så när vi behöver initialisera referenstypdatamedlemmarna använder vi initialiseringslistor.
I följande program initialiserar vi referensdatamedlemmen med initialiseringslistan.
#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; }
Produktion:
Värde är 10
I det här programmet har vi en referens som datamedlem och vi initialiserar den med initialiseringslistan.
# 4) När medlemsnamn och parameter har samma namn.
hur man förklarar en lista i java
När medlemsnamn för en klass ska initialiseras med parametrarna och dessa parametrar har samma namn som medlemsnamn använder vi initialiserarlistan. I våra tidigare ämnen använde vi den här pekaren för samma situation. Det andra alternativet är initialiseringslistan.
Vi har modifierat exemplet ovan med den här pekaren för att använda initialiseringslistan i följande program.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Produktion:
num = 100
ch = A

I detta program skickar vi parametrar för att initialisera datamedlemmarna med samma namn. I det här fallet använder vi initialiseringslistan för detta ändamål.
# 5) För att förbättra prestanda
Varje gång vi initialiserar datamedlemmarna i konstruktörens kropp skapas ett tillfälligt objekt för datamedlemmen medan värden tilldelas. När uppgiften är klar raderas detta tillfälliga objekt. Detta är faktiskt en overhead.
Om vi använder initialiseringslistan används å andra sidan en kopiekonstruktör för att tilldela värden. Detta förbättrar prestandan avsevärt.
Slutsats
Således i denna handledning har vi lärt oss om initialiseringslistorna tillsammans med många situationer där vi behöver använda dem i C ++ programmering.
Även om vi inte behöver använda initialiserarlistan när dessa situationer inte finns, kan vi alltid använda dem för att förbättra programprestanda.
I vår kommande handledning kommer vi att diskutera vänfunktioner i C ++ i detalj.
=> Se här för att utforska listan med fullständiga C ++ -studier.
Rekommenderad läsning