initializer lists c
Udforsk alt om initialiseringslister i C ++ med eksempler i detaljer.
C ++ bruger initialiseringslister til at initialisere datamedlemmerne til deres værdier.
Initialiseringslister bruges mest i specifikke situationer, hvor det ikke er muligt at initialisere værdierne i konstruktørlegemet.
private servere til World of Warcraft
=> Klik her for det gratis C ++ kursus.
Initialiseringslister i C ++
Den generelle syntaks for initialiseringslisten er:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Nogle af disse situationer, hvor initialiseringslisterne bruges, er anført nedenfor:
# 1) En standardkonstruktør leveres ikke til medlemsobjektklassen.
Når vi har et andet klasseobjekt som medlem af klassen, og klassen for det objekt ikke har standardkonstruktør, initialiserer vi dette dataelementobjekt ved hjælp af initialiseringslisten.
Dette vises i det følgende 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; jeg = 10
Konstruktør :: B
I ovenstående program er objektet i klasse A et datamedlem i klasse B. I klasse A har vi en parametreret konstruktør, men ikke en standardkonstruktør. Derfor er vi nødt til at bruge initialiseringslisten i klasse B for at skabe klasse A-objekt.
# 2) Initialisering af C vores datamedlemmer.
Da medlemmer af const-data kun kan initialiseres en gang, initialiserer vi dem ved hjælp af initialiseringslisten.
Vi demonstrerer dette ved hjælp af 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); }
Produktion:
Værdien er 10
I ovenstående program har vi en const som datamedlem. Hvis vi skal initialisere dette const-medlem til en værdi, gør vi det ved hjælp af initialiseringslisten som vist.
# 3) Til initialisering af referencedatatyper.
Ligesom konstanter er referencer uforanderlige. Så når vi har brug for at initialisere referencetypedatamedlemmer, bruger vi initialiseringslister.
I det følgende program initialiserer vi referencedatamedlemmet ved hjælp af 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; }
Produktion:
Værdien er 10
I dette program har vi en reference som data-medlem, og vi initialiserer den ved hjælp af initialiseringslisten.
# 4) Når medlemsnavn og parameter har samme navn.
python multiple hvis udsagn på en linje
Når medlemsnavne i en klasse skal initialiseres med parametrene, og disse parametre har de samme navne som medlemsnavne, bruger vi initialiseringslisten. I vores tidligere emner brugte vi denne markør til den samme situation. Den anden mulighed er initialiseringslisten.
Vi har ændret ovenstående eksempel med denne markør for at gøre brug af initialiseringslisten i det følgende 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:
tal = 100
ch = A

I dette program videregiver vi parametre til initialisering af datamedlemmer, der har de samme navne. I dette tilfælde bruger vi initialiseringslisten til dette formål.
# 5) For at forbedre ydeevnen
Hver gang vi initialiserer dataelementerne i konstruktørens krop, oprettes der et midlertidigt objekt til datalementet, mens værdier tildeles. Når opgaven er udført, slettes dette midlertidige objekt. Dette er faktisk en overhead.
Hvis vi på den anden side bruger initialiseringslisten, bruges en kopikonstruktør til at tildele værdier. Dette forbedrer ydeevnen betydeligt.
Konklusion
Således i denne vejledning har vi lært om initialiseringslisterne sammen med mange situationer, hvor vi skal bruge dem til C ++ programmering.
Selvom vi ikke behøver at bruge initialiseringslisten, når disse situationer ikke er til stede, kan vi altid bruge dem til at forbedre programmets ydeevne.
I vores kommende vejledning vil vi diskutere venfunktioner i C ++ i detaljer.
=> Se her for at udforske den komplette C ++ tutorials-liste.
Anbefalet læsning