initializer lists c
Разгледайте всичко за списъците с инициатори в C ++ с подробни примери.
C ++ използва списъци за инициализация, за да инициализира членовете на данните до техните стойности.
Списъците с инициализатори се използват предимно в специфични ситуации, когато не е възможно да се инициализират стойностите в тялото на конструктора.
unix примери за скриптове за черупки за начинаещи
=> Щракнете тук за безплатния курс C ++.
Списъци за инициализация в C ++
Общият синтаксис на списъка Initializer е:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Някои от тези ситуации, при които се използват списъците на инициализатора, са изброени по-долу:
# 1) Не е предоставен конструктор по подразбиране за класа обект-член.
Когато имаме друг обект на клас като член на класа и класът на този обект няма конструктор по подразбиране, тогава ние инициализираме този обект на член на данни, като използваме списъка на инициализатора.
Това е показано в следващата програма.
#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; }
Изход:
Конструктор :: A; i = 10
Конструктор :: B
В горната програма обектът на клас A е член на данни от клас B. В клас A имаме параметризиран конструктор, но не конструктор по подразбиране. По този начин трябва да използваме списък на инициализатор в клас B, за да създадем обект от клас A.
# 2) Инициализиране на C нашите членове на данни.
Тъй като членовете на const данни могат да бъдат инициализирани само веднъж, ние ги инициализираме, като използваме списъка на инициализатора.
Това демонстрираме, като използваме следния пример.
#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); }
Изход:
Стойността е 10
В горната програма имаме const като член на данните. Ако трябва да инициализираме този const член до стойност, тогава го правим, като използваме списъка на инициализатора, както е показано.
# 3) За инициализиране на референтни типове данни.
Подобно на константите референциите са неизменни. Така че, когато трябва да инициализираме членовете на данните от референтния тип, използваме списъци за инициализация.
В следващата програма ние инициализираме референтния член с данни, като използваме инициализационния списък.
#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; }
Изход:
Стойността е 10
В тази програма имаме референция като член на данни и я инициализираме, като използваме инициализационния списък.
# 4) Когато Името на члена и параметърът имат едно и също име.
най-добрите места за безплатно гледане на аниме
Когато имената на членове на клас трябва да бъдат инициализирани с параметрите и тези параметри имат същите имена като имената на членове, ние използваме списък за инициализация. В предишните ни теми използвахме този указател за същата ситуация. Втората опция е списъкът на инициализатора.
Модифицирахме горния пример с този указател, за да използваме списъка на инициализатора в следващата програма.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Изход:
num = 100
ch = A

В тази програма ние предаваме параметри, за да инициализираме членовете на данните със същите имена. В този случай използваме списъка за инициализация за тази цел.
# 5) За подобряване на производителността
Всеки път, когато инициализираме членовете на данните в тялото на конструктора, се създава временен обект за члена на данните, докато присвоява стойности. След като присвояването приключи, този временен обект се изтрива. Това всъщност е режийни разходи.
Ако използваме инициализационния списък, от друга страна, конструктор на копиране се използва за присвояване на стойности. Това значително подобрява производителността.
Заключение
По този начин в този урок научихме за списъците на инициализатора заедно с много ситуации, в които трябва да ги използваме в програмирането на C ++.
Въпреки че не е необходимо да използваме списъка на инициализатора, когато тези ситуации не са налице, винаги можем да ги използваме, за да подобрим работата на програмата.
В нашия предстоящ урок ще обсъдим подробно функциите на приятели в C ++.
=> Вижте тук, за да разгледате пълния списък с уроци за C ++.
Препоръчително четене