Contenuti del Corso
OOP in C++
OOP in C++
Che cos'è un costruttore della classe
Il costruttore è un metodo speciale di una classe che viene chiamato quando un oggetto viene creato. Con esso è possibile inizializzare gli attributi con valori significativi.
Utilizzando i costruttori, è possibile semplificare la creazione degli oggetti. Senza un costruttore, sarebbe necessario impostare ogni proprietà singolarmente e potrebbe essere necessario chiamare più metodi solo per rendere l'oggetto utilizzabile.
Lo scopo principale di un costruttore è inizializzare l'istanza appena creata. Può impostare i valori iniziali degli attributi in base ai parametri passati al costruttore, garantendo che l'oggetto inizi in uno stato valido.
Sintassi del costruttore
Sebbene il processo di sviluppo di un costruttore possa sembrare semplice, coinvolge numerose considerazioni specifiche. L'approccio generale per crearne uno è:
student.h
class Student { public: Student() { name = 'Default'; } std::string name; };
Nome: il costruttore ha lo stesso nome della classe;
Tipo di ritorno: i costruttori non hanno un tipo di ritorno, nemmeno
void
;Parametri: i costruttori possono accettare parametri e possono essere sovraccaricati con diversi insiemi di parametri per consentire vari modi di inizializzare gli oggetti;
Invocazione automatica: il costruttore viene chiamato automaticamente dal compilatore quando viene creato un oggetto.
Costruttore di default
Un costruttore di default è un costruttore che può essere invocato senza argomenti. Ecco come vengono definiti e utilizzati i costruttori di default:
main.cpp
#include <iostream> class Example { public: Example() { std::cout << "Object was created!"; } }; int main() { Example obj; }
Puoi sperimentare con il codice sopra. La logica scritta nel metodo Example() viene eseguita ogni volta che viene creata un'istanza della classe.
Prova ad aggiungere un altro oggetto o a modificare la logica all'interno del costruttore.
Se non viene definito alcun costruttore, il compilatore ne genera uno predefinito. Il suo comportamento dipende dai tipi delle variabili membro: tipi fondamentali, tipi con costruttore predefinito o tipi definiti dall'utente.
main.cpp
#include <iostream> class Example { public: int value; }; int main() { Example obj; // Default constructor std::cout << obj.value; }
Un attributo è un tipo di dato fondamentale. Il costruttore predefinito generato automaticamente non inizializza le variabili membro di tipo incorporato. Queste avranno valori indeterminati se si crea un oggetto senza inizializzare esplicitamente questi campi.
Potresti notare che il compilatore fornisce un valore coerente per la variabile value, ma lo standard non lo richiede ed è possibile che contenga un valore spazzatura.
Grazie per i tuoi commenti!