initializer lists c
Utforsk alt om initialiseringslister i C ++ med eksempler i detalj.
C ++ bruker initialiseringslister til å initialisere datamedlemmene til deres verdier.
Initialiseringslister brukes mest i spesifikke situasjoner der det ikke er mulig å initialisere verdiene i konstruktørlegemet.
inngangsnivå qa tester intervju spørsmål
=> Klikk her for gratis C ++ kurs.
Initialiseringslister i C ++
Den generelle syntaksen til initialiseringslisten er:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Noen av disse situasjonene der initialiseringslistene brukes er listet opp nedenfor:
# 1) En standardkonstruktør er ikke gitt for medlemsobjektklassen.
Når vi har et annet klasseobjekt som medlem av klassen og klassen til det objektet ikke har standardkonstruktør, initialiserer vi dette dataelementobjektet ved hjelp av initialiseringslisten.
Dette vises i det følgende programmet.
#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; }
Produksjon:
Konstruktør :: A; jeg = 10
Konstruktør :: B
I det ovennevnte programmet er objektet til klasse A et datamedlem i klasse B. I klasse A har vi en parameterisert konstruktør, men ikke en standardkonstruktør. Derfor må vi bruke initialiseringsliste i klasse B for å lage klasse A-objekt.
# 2) Initialisering av C våre datamedlemmer.
Ettersom const data-medlemmer bare kan initialiseres en gang, initialiserer vi dem ved hjelp av initialiseringslisten.
Vi demonstrerer dette ved hjelp av følgende eksempel.
#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); }
Produksjon:
Verdien er 10
I programmet ovenfor har vi en const som data-medlem. Hvis vi må initialisere dette const-medlemmet til en verdi, gjør vi det ved å bruke initialiseringslisten som vist.
# 3) For initialisering av referansedatatyper.
Som konstanter er referanser uforanderlige. Så når vi trenger å initialisere referansetypedatamedlemmene, bruker vi initialiseringslister.
I det følgende programmet initialiserer vi referansedatamedlemmet ved hjelp av initialiseringslisten.
#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; }
Produksjon:
Verdien er 10
I dette programmet har vi en referanse som data-medlem, og vi initialiserer den ved hjelp av initialiseringslisten.
# 4) Når medlemsnavn og parameter har samme navn.
mobile testing intervju spørsmål og svar
Når medlemsnavn i en klasse skal initialiseres med parametrene og disse parameterne har samme navn som medlemsnavn, bruker vi initialiseringsliste. I de forrige emnene våre brukte vi denne pekeren i samme situasjon. Det andre alternativet er initialiseringslisten.
Vi har endret eksemplet ovenfor med denne pekeren for å benytte initialiseringslisten i det følgende programmet.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Produksjon:
num = 100
ch = A.

I dette programmet sender vi parametere for å initialisere datamedlemmene som har samme navn. I dette tilfellet bruker vi initialiseringslisten til dette formålet.
# 5) For å forbedre ytelsen
Hver gang vi initialiserer dataelementene i konstruktørens kropp, opprettes et midlertidig objekt for dataelementet mens verdiene tildeles. Når oppdraget er gjort, blir dette midlertidige objektet slettet. Dette er faktisk en overhead.
Hvis vi bruker initialiseringslisten, derimot, brukes en kopikonstruktør til å tilordne verdier. Dette forbedrer ytelsen betydelig.
Konklusjon
I denne veiledningen har vi lært om initialiseringslistene sammen med mange situasjoner der vi trenger å bruke dem i C ++ programmering.
Selv om vi ikke trenger å bruke initialiseringslisten når disse situasjonene ikke er til stede, kan vi alltid bruke dem til å forbedre programytelsen.
I vår kommende opplæring vil vi diskutere vennefunksjoner i C ++ i detalj.
=> Se her for å utforske hele C ++ opplæringslisten.
Anbefalt lesing