initializer lists c
Esplora tutti gli elenchi di inizializzatori in C ++ con esempi dettagliati.
C ++ utilizza elenchi di inizializzatori per inizializzare i membri di dati sui loro valori.
Gli elenchi di inizializzatori vengono utilizzati principalmente in situazioni specifiche in cui non è possibile inizializzare i valori nel corpo del costruttore.
miglior blocco pop-up gratuito per Chrome
=> Fare clic qui per il corso C ++ gratuito.
Elenchi di inizializzatori in C ++
La sintassi generale dell'elenco degli inizializzatori è:
constructorName(type value1, type value2):datamember(value1), datamember(value2) { //constructor code }
Di seguito sono elencate alcune di queste situazioni in cui vengono utilizzati gli elenchi di inizializzatori:
# 1) Non viene fornito un costruttore predefinito per la classe di oggetti membro.
Quando abbiamo un altro oggetto classe come membro della classe e la classe di quell'oggetto non ha un costruttore predefinito, inizializziamo questo oggetto membro dati utilizzando l'elenco degli inizializzatori.
Questo è mostrato nel seguente programma.
#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; }
Produzione:
Costruttore :: A; io = 10
Costruttore :: B
Nel programma precedente, l'oggetto della classe A è un membro dati della classe B. Nella classe A, abbiamo un costruttore parametrizzato ma non un costruttore predefinito. Quindi abbiamo bisogno di usare la lista degli inizializzatori nella classe B, per creare un oggetto di classe A.
# 2) Inizializzazione di C i nostri membri dei dati.
Poiché i membri dati const possono essere inizializzati solo una volta, li inizializziamo utilizzando l'elenco degli inizializzatori.
Lo dimostriamo utilizzando il seguente esempio.
#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); }
Produzione:
Il valore è 10
Nel programma sopra, abbiamo un const come membro dati. Se dobbiamo inizializzare questo membro const su un valore, lo facciamo usando l'elenco degli inizializzatori come mostrato.
# 3) Per inizializzare i tipi di dati di riferimento.
Come le costanti, i riferimenti sono immutabili. Pertanto, ogni volta che è necessario inizializzare i membri dei dati del tipo di riferimento, utilizziamo gli elenchi di inizializzatori.
Nel seguente programma, inizializziamo il membro dei dati di riferimento utilizzando l'elenco degli inizializzatori.
#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; }
Produzione:
Il valore è 10
In questo programma, abbiamo un riferimento come membro dati e lo inizializziamo utilizzando l'elenco degli inizializzatori.
# 4) Quando il nome del membro e il parametro hanno lo stesso nome.
come faccio ad aprire un file torrent
Quando i nomi dei membri di una classe devono essere inizializzati con i parametri e questi parametri hanno gli stessi nomi dei nomi dei membri, usiamo la lista degli inizializzatori. Nei nostri argomenti precedenti, abbiamo utilizzato questo puntatore per la stessa situazione. La seconda opzione è l'elenco degli inizializzatori.
Abbiamo modificato l'esempio precedente con questo puntatore per utilizzare l'elenco degli inizializzatori nel programma seguente.
#include using namespace std; class Sample { private: int num; char ch; public: Sample(int num,char ch):num(num),ch(ch){ cout<<'num = '< Produzione:
num = 100
ch = A
In questo programma, passiamo parametri per inizializzare i membri di dati con gli stessi nomi. In questo caso, utilizziamo l'elenco degli inizializzatori per questo scopo.
# 5) Per migliorare le prestazioni
Ogni volta che inizializziamo i membri dati nel corpo del costruttore, viene creato un oggetto temporaneo per il membro dati durante l'assegnazione dei valori. Una volta completata l'assegnazione, questo oggetto temporaneo viene eliminato. Questo è in realtà un sovraccarico.
Se usiamo l'elenco degli inizializzatori, d'altra parte, un costruttore di copie viene utilizzato per l'assegnazione dei valori. Ciò migliora notevolmente le prestazioni.
Conclusione
Pertanto, in questo tutorial, abbiamo imparato a conoscere gli elenchi di inizializzatori insieme a molte situazioni in cui è necessario utilizzarli nella programmazione C ++.
Sebbene non sia necessario utilizzare l'elenco degli inizializzatori quando queste situazioni non sono presenti, è sempre possibile utilizzarli per migliorare le prestazioni del programma.
Nel nostro prossimo tutorial, discuteremo in dettaglio delle funzioni di amicizia in C ++.
=> Vedi qui per esplorare l'elenco completo dei tutorial C ++.
Lettura consigliata