Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Lista di Inizializzazione del Costruttore | Costruttori e Distruttori
OOP in C++
course content

Contenuti del Corso

OOP in C++

OOP in C++

1. Fondamenti della OOP in C++
2. Costruttori e Distruttori
3. Panoramica sull'Incapsulamento
4. Panoramica sull'Ereditarietà
5. Panoramica sul Polimorfismo

book
Lista di Inizializzazione del Costruttore

Una lista di inizializzazione permette ai costruttori di inizializzare i membri della classe prima che venga eseguito il corpo del costruttore. È particolarmente utile per inizializzazioni complesse o quando si lavora con oggetti di classi che hanno membri const.

Sintassi della Lista di Inizializzazione

La sintassi delle liste di inizializzazione può sembrare eccessivamente complessa e confusa. Si potrebbe pensare di utilizzare solo un costruttore come alternativa più semplice. Tuttavia, man mano che il programma cresce, le liste di inizializzazione si dimostrano comode e semplici da utilizzare.

  • :(simbolo due punti): introduce la lista di inizializzazione dei membri in un costruttore;

  • member (value): una variabile membro della classe che viene inizializzata con il valore (argomento passato al costruttore);

  • { }(parentesi graffe): il corpo del costruttore, dove è possibile eseguire codice aggiuntivo dopo l'inizializzazione dei membri.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitazioni e Considerazioni

Esiste un malinteso comune riguardo l'ordine di inizializzazione nella lista di inizializzazione. Contrariamente a quanto si crede, l'inizializzazione delle variabili nella lista di inizializzazione non segue l'ordine in cui sono scritte. Invece, è determinato dall'ordine di dichiarazione dei membri nella classe, e non dalla sequenza nella lista di inizializzazione.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Prova a modificare la sequenza di inizializzazione della variabile total nella lista di inizializzazione e nella dichiarazione della variabile all'interno della class.

Quando si utilizzano le liste di inizializzazione in un costruttore, l'argomento può avere lo stesso nome dell'attributo della class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Ma se si utilizza lo stesso nome sia per le variabili membro che per gli argomenti, total assumerà il valore dei parametri moltiplicati, non dei membri. Per verificarlo, prova a impostare quantity a zero invece che all'argomento.

1. Cos'è una lista di inizializzazione del costruttore?

2. Quale simbolo introduce la lista di inizializzazione dei membri in un costruttore?

question mark

Cos'è una lista di inizializzazione del costruttore?

Select the correct answer

question mark

Quale simbolo introduce la lista di inizializzazione dei membri in un costruttore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

course content

Contenuti del Corso

OOP in C++

OOP in C++

1. Fondamenti della OOP in C++
2. Costruttori e Distruttori
3. Panoramica sull'Incapsulamento
4. Panoramica sull'Ereditarietà
5. Panoramica sul Polimorfismo

book
Lista di Inizializzazione del Costruttore

Una lista di inizializzazione permette ai costruttori di inizializzare i membri della classe prima che venga eseguito il corpo del costruttore. È particolarmente utile per inizializzazioni complesse o quando si lavora con oggetti di classi che hanno membri const.

Sintassi della Lista di Inizializzazione

La sintassi delle liste di inizializzazione può sembrare eccessivamente complessa e confusa. Si potrebbe pensare di utilizzare solo un costruttore come alternativa più semplice. Tuttavia, man mano che il programma cresce, le liste di inizializzazione si dimostrano comode e semplici da utilizzare.

  • :(simbolo due punti): introduce la lista di inizializzazione dei membri in un costruttore;

  • member (value): una variabile membro della classe che viene inizializzata con il valore (argomento passato al costruttore);

  • { }(parentesi graffe): il corpo del costruttore, dove è possibile eseguire codice aggiuntivo dopo l'inizializzazione dei membri.

temperature_sensor.h

temperature_sensor.h

copy
1234567
class TemperatureSensor { public: TemperatureSensor(int initialTemperature) : currentTemperature(initialTemperature) {} int currentTemperature; };

Limitazioni e Considerazioni

Esiste un malinteso comune riguardo l'ordine di inizializzazione nella lista di inizializzazione. Contrariamente a quanto si crede, l'inizializzazione delle variabili nella lista di inizializzazione non segue l'ordine in cui sono scritte. Invece, è determinato dall'ordine di dichiarazione dei membri nella classe, e non dalla sequenza nella lista di inizializzazione.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float _quantity, float _rate) : quantity(_quantity), rate(_rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }
Note
Nota

Prova a modificare la sequenza di inizializzazione della variabile total nella lista di inizializzazione e nella dichiarazione della variabile all'interno della class.

Quando si utilizzano le liste di inizializzazione in un costruttore, l'argomento può avere lo stesso nome dell'attributo della class.

main.cpp

main.cpp

copy
123456789101112131415
#include <iostream> class Exchanger { public: Exchanger(float quantity, float rate) : quantity(quantity), rate(rate), total(quantity * rate) {} float quantity, rate, total; }; int main() { Exchanger exchanger(100, 0.3); std::cout << exchanger.total; }

Ma se si utilizza lo stesso nome sia per le variabili membro che per gli argomenti, total assumerà il valore dei parametri moltiplicati, non dei membri. Per verificarlo, prova a impostare quantity a zero invece che all'argomento.

1. Cos'è una lista di inizializzazione del costruttore?

2. Quale simbolo introduce la lista di inizializzazione dei membri in un costruttore?

question mark

Cos'è una lista di inizializzazione del costruttore?

Select the correct answer

question mark

Quale simbolo introduce la lista di inizializzazione dei membri in un costruttore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3
some-alt