initializer lists c
Raziščite vse o seznamih inicializatorjev v jeziku C ++ s podrobnimi primeri.
C ++ uporablja sezname inicializatorjev za inicializacijo podatkovnih članov na njihove vrednosti.
Seznami inicializatorjev se večinoma uporabljajo v posebnih situacijah, ko vrednosti v telesu konstruktorja ni mogoče inicializirati.
c in c ++ razlika
=> Kliknite tukaj za brezplačni tečaj C ++.
Seznami inicializatorjev v jeziku C ++
Splošna sintaksa seznama Initializer je:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Nekatere od teh situacij, v katerih se uporabljajo seznami inicializatorjev, so navedeni spodaj:
# 1) Privzeti konstruktor ni na voljo za razred predmetov člana.
Ko imamo za člana razreda še en objekt razreda, razred tega predmeta pa nima privzetega konstruktorja, potem ta predmet podatkovnega člana inicializiramo s pomočjo seznama inicializatorja.
To je prikazano v naslednjem programu.
#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; }
Izhod:
Konstruktor :: A; i = 10
Konstruktor :: B
V zgornjem programu je objekt razreda A podatkovni član razreda B. V razredu A imamo parametriziran konstruktor, ne pa privzeti konstruktor. Zato moramo uporabiti seznam inicializatorjev v razredu B, da bi ustvarili objekt razreda A.
# 2) Inicializacija C naši člani s podatki.
Ker je mogoče podatke const inicializirati samo enkrat, jih inicializiramo s pomočjo seznama inicializatorjev.
To dokažemo na naslednjem primeru.
#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); }
Izhod:
Vrednost je 10
V zgornjem programu imamo const kot podatkovni član. Če moramo tega člana const inicializirati na vrednost, to storimo s pomočjo seznama inicializatorja, kot je prikazano.
# 3) Za inicializacijo referenčnih vrst podatkov.
Tako kot konstante so tudi reference nespremenljive. Torej, kadar moramo inicializirati člane podatkov referenčnega tipa, uporabimo sezname inicializatorjev.
V naslednjem programu referenčni podatkovni član inicializiramo s pomočjo seznama inicializatorjev.
#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; }
Izhod:
Vrednost je 10
V tem programu imamo referenco kot podatkovnega člana in jo inicializiramo s pomočjo seznama inicializatorjev.
# 4) Če imata ime in parameter člana isto ime.
kako brati datoteke .dat
Ko je treba imena članov razreda inicializirati s parametri in imajo ti parametri enaka imena kot imena članov, uporabimo inicializacijski seznam. V prejšnjih temah smo uporabili ta kazalec za enako situacijo. Druga možnost je seznam inicializatorjev.
Zgornji primer smo spremenili s tem kazalcem, da uporabimo seznam inicializatorjev v naslednjem programu.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Izhod:
število = 100
ch = A

V tem programu posredujemo parametre za inicializacijo podatkovnih članov z enakimi imeni. V tem primeru v ta namen uporabimo seznam inicializatorjev.
# 5) Za izboljšanje učinkovitosti
Vsakič, ko inicializiramo člane podatkov v telesu konstruktorja, se za dodelitev vrednosti ustvari začasni objekt za podatkovnega člana. Ko je dodelitev končana, se ta začasni objekt izbriše. To je dejansko režija.
Če uporabimo seznam inicializatorjev, se za dodeljevanje vrednosti uporablja konstruktor kopij. To bistveno izboljša zmogljivost.
Zaključek
Tako smo v tej vadnici spoznali sezname inicializatorjev in številne situacije, v katerih jih moramo uporabiti pri programiranju na C ++.
Čeprav nam ni treba uporabiti seznama inicializatorjev, kadar teh situacij ni, jih lahko vedno uporabimo za izboljšanje delovanja programa.
V naši prihajajoči vadnici bomo podrobno razpravljali o prijateljskih funkcijah v jeziku C ++.
=> Glejte tukaj, če želite raziskati celoten seznam vadnic za C ++.
Priporočeno branje