initializer lists c
Prozkoumejte vše o seznamech inicializátorů v C ++ s podrobnými příklady.
C ++ používá seznamy inicializátorů k inicializaci datových členů na jejich hodnoty.
Seznamy inicializátoru se většinou používají v konkrétních situacích, kdy není možné inicializovat hodnoty v těle konstruktoru.
program pro sledování teploty CPU a GPU
=> Klikněte sem a získejte bezplatný kurz C ++.
Seznamy inicializátoru v C ++
Obecná syntaxe seznamu inicializátorů je:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Níže jsou uvedeny některé z těchto situací, kde se používají seznamy inicializátorů:
# 1) Pro třídu členských objektů není poskytován výchozí konstruktor.
Když máme jako člen třídy jiný objekt třídy a třída tohoto objektu nemá výchozí konstruktor, inicializujeme tento objekt datového člena pomocí seznamu inicializátorů.
To ukazuje následující 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; }
Výstup:
Konstruktor :: A; i = 10
Konstruktor :: B
Ve výše uvedeném programu je objekt třídy A datovým členem třídy B. Ve třídě A máme parametrizovaný konstruktor, ale ne výchozí konstruktor. Proto musíme použít seznam inicializátorů ve třídě B, abychom vytvořili objekt třídy A.
# 2) Inicializace C. naši datoví členové.
Protože datové členy const lze inicializovat pouze jednou, inicializujeme je pomocí seznamu inicializátorů.
Ukázali jsme to pomocí následujícího příkladu.
#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); }
Výstup:
Hodnota je 10
Ve výše uvedeném programu máme const jako datový člen. Pokud musíme inicializovat tohoto člena const na hodnotu, uděláme to pomocí seznamu inicializátorů, jak je znázorněno.
# 3) Pro inicializaci referenčních datových typů.
Stejně jako konstanty jsou odkazy neměnné. Takže kdykoli potřebujeme inicializovat datové členy referenčního typu, použijeme seznamy inicializátorů.
V následujícím programu inicializujeme člena referenčních dat pomocí seznamu inicializátorů.
#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; }
Výstup:
Hodnota je 10
V tomto programu máme odkaz jako datový člen a inicializujeme jej pomocí seznamu inicializátorů.
# 4) Pokud mají členské jméno a parametr stejné jméno.
kde je soubor apk v systému Android
Když mají být názvy členů třídy inicializovány parametry a tyto parametry mají stejné názvy jako názvy členů, použijeme seznam inicializátorů. V našich předchozích tématech jsme tento ukazatel použili pro stejnou situaci. Druhou možností je seznam inicializátorů.
Upravili jsme výše uvedený příklad s tímto ukazatelem, abychom využili seznam inicializátorů v následujícím programu.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Výstup:
num = 100
ch = A

V tomto programu předáme parametry k inicializaci datových členů se stejnými názvy. V tomto případě použijeme pro tento účel seznam inicializátorů.
# 5) Zlepšení výkonu
Pokaždé, když inicializujeme datové členy v těle konstruktoru, vytvoří se pro datový člen dočasný objekt při přiřazování hodnot. Po dokončení přiřazení je tento dočasný objekt odstraněn. To je vlastně režie.
Pokud použijeme seznam inicializátorů, na druhé straně se pro přiřazení hodnot použije konstruktor kopírování. To výrazně zlepšuje výkon.
Závěr
V tomto kurzu jsme se tedy dozvěděli o seznamech inicializátorů spolu s mnoha situacemi, ve kterých je musíme použít v programování v C ++.
I když nemusíme používat seznam inicializátorů, pokud tyto situace nejsou k dispozici, můžeme je vždy použít ke zlepšení výkonu programu.
V našem nadcházejícím tutoriálu podrobně probereme funkce přátel v C ++.
=> Prohlédněte si zde Úplný seznam výukových programů C ++.
Doporučené čtení