Analizza il seguente codice:
struct studente {
char nome[20];
char cognome[20];
int annoNascita;
int voti[20]; // Contiene i voti dello studente
int numVoti; // Contiene quanti voti sono stati inseriti per lo studente
studente() { // costruttore vuoto invocato con studente s1;
// strcpy(nome, "fabio");
annoNascita=1990;
numVoti=0; // Imposta il numero di voti iniziali a zero
}
studente(const studente &s) { // costruttore invocato con studente s2(s1)
annoNascita = s.annoNascita; // copio l'anno di nascita
}
};
int main() {
studente s; // Dichiarare una variabile
cout << s.numVoti; // Stampa zero perché lo imposta il costruttore
studente s2(s);
cout << s2.annoNascita; // Stampa l'anno di nascita che è uguale a quello di s1
}
Il costruttore di una struct
è una funzione speciale che viene richiamata quando la struct
viene dichiarata nel codice struct studente s;
.
La struttura s
appena dichiarata
ha il numero di voti uguale a zero. Se non ci fosse il costruttore la variabile intera numVoti
conterrebbe
un numero casuale e dovremmo azzerarla poi,
visto che se creo un nuovo studente mi immagino che non abbia ancora voti inseriti.
Il costruttore studente(const studente & s)
in più riceve in ingresso un parametro di tipo
struttura studente e quindi consente di inizializzare i valori della struttura nuova in base a quelli della struttura
passata.
strlen
)sizeof
)studente(const studente & s)
in modo che quando si crea
una nuova struttura con studente s2(s1)
vengano copiati tutti gli elementi della struttura
precedente e dopo avere dichiarato una struttura s3 copiata dalla s1, stampane i valori con la funzione precedente.Quindi carica su moodle un il programma realizzato.
Maggiori informazioni su cplusplus
Buon lavoro!