initializer lists c
Poznaj wszystkie informacje o listach inicjalizujących w języku C ++ ze szczegółowymi przykładami.
C ++ używa list inicjalizujących do inicjowania elementów członkowskich danych do ich wartości.
Listy inicjalizujące są najczęściej używane w określonych sytuacjach, w których nie jest możliwe zainicjowanie wartości w treści konstruktora.
jak uruchamiać pliki .jar w systemie Windows
=> Kliknij tutaj, aby uzyskać bezpłatny kurs C ++.
Listy inicjalizacyjne w C ++
Ogólna składnia listy inicjalizatora jest następująca:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Niektóre z tych sytuacji, w których używane są listy inicjatorów, są wymienione poniżej:
# 1) Domyślny konstruktor nie jest dostarczany dla klasy obiektów składowych.
Kiedy mamy inny obiekt klasy jako element członkowski klasy, a klasa tego obiektu nie ma domyślnego konstruktora, wówczas inicjalizujemy ten obiekt elementu członkowskiego danych przy użyciu listy inicjalizacyjnej.
Pokazuje to następujący 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; }
Wynik:
Konstruktor: A; i = 10
Konstruktor: B
W powyższym programie obiekt klasy A jest składnikiem danych klasy B. W klasie A mamy sparametryzowany konstruktor, ale nie mamy konstruktora domyślnego. Dlatego musimy użyć listy inicjalizacyjnej w klasie B, aby stworzyć obiekt klasy A.
# 2) Inicjalizacja C. nasi członkowie danych.
Ponieważ składowe danych stałych można zainicjować tylko raz, inicjalizujemy je przy użyciu listy inicjalizacyjnej.
Pokazujemy to na poniższym przykładzie.
#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); }
Wynik:
Wartość to 10
W powyższym programie mamy stałą jako składową danych. Jeśli musimy zainicjować ten element członkowski const na wartość, robimy to przy użyciu listy inicjalizującej, jak pokazano.
# 3) Do inicjowania referencyjnych typów danych.
Podobnie jak stałe odniesienia są niezmienne. Więc ilekroć musimy zainicjować składowe danych typu referencyjnego, używamy list inicjalizujących.
W poniższym programie inicjalizujemy element członkowski danych odniesienia przy użyciu listy inicjalizacyjnej.
#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; }
Wynik:
Wartość to 10
W tym programie mamy odniesienie jako element członkowski danych i inicjalizujemy go przy użyciu listy inicjalizacyjnej.
# 4) Gdy nazwa członka i parametr mają tę samą nazwę.
najlepszy program do pobierania muzyki na telefony z systemem Android
Gdy nazwy członków klasy mają być inicjowane parametrami, a te parametry mają takie same nazwy jak nazwy członków, używamy listy inicjalizacyjnej. W naszych poprzednich tematach używaliśmy tego wskaźnika w tej samej sytuacji. Drugą opcją jest lista inicjalizacyjna.
Zmodyfikowaliśmy powyższy przykład tym wskaźnikiem, aby użyć listy inicjalizacyjnej w następującym programie.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Wynik:
num = 100
ch = A

W tym programie przekazujemy parametry, aby zainicjować składowe danych o takich samych nazwach. W tym przypadku używamy w tym celu listy inicjalizacyjnej.
# 5) Aby poprawić wydajność
Za każdym razem, gdy inicjalizujemy elementy członkowskie danych w treści konstruktora, podczas przypisywania wartości tworzony jest tymczasowy obiekt dla elementu członkowskiego danych. Po zakończeniu przypisywania ten tymczasowy obiekt jest usuwany. To jest w rzeczywistości narzut.
Z drugiej strony, jeśli używamy listy inicjalizacyjnej, do przypisywania wartości używany jest konstruktor kopiujący. To znacznie poprawia wydajność.
Wniosek
Dlatego w tym samouczku poznaliśmy listy inicjalizacyjne oraz wiele sytuacji, w których musimy ich używać w programowaniu w C ++.
Chociaż nie musimy używać listy inicjatorów, gdy takie sytuacje nie występują, zawsze możemy ich użyć, aby poprawić wydajność programu.
W naszym nadchodzącym samouczku szczegółowo omówimy funkcje znajomych w języku C ++.
=> Zobacz tutaj, aby poznać pełną listę samouczków języka C ++.
rekomendowane lektury