Salve ho da poco iniziato a studiare il C++ e mi sto divorando il libro che ho, capitolo dopo capitolo. Ora essendo arrivato all'ereditarietà e al polimorfismo, mi sono imbattuto in un esercizio che ho trovato in rete.
Per farla breve il testo chiede di creare una classe Persona con i seguenti attributi: nome, cognome e codice fiscale. E qui dovevo creare un costruttore per inizializzare da tastiera gli attributi e un distruttore e specificare a video quando ciò accadeva (con un cout niente di che). Dovevo inoltre creare un metodo per la stampa di ciò che ho scritto.
Per la seconda parte del problema dovevo creare una seconda classe che derivasse dalla prima e dovevo chiamarla Studente e inserire gli attributi N°Matricola e Corso di Laurea, anche qui con un costruttore, un distruttore e un metodo di stampa dei dati.
Il problema l'ho risolto tranquillamente, solo che ho un dubbio su una cosa. Quando richiamo il distruttore di Studente in automatico mi richiama anche quello di persona. Per facilitarvi le cose vi posto il listato.
#include <iostream>
#include <string>
using namespace std;
class Persona{
//Dichiarazioni variabili "Persona"
string nome;
string cognome;
string codFISC;
public:
Persona(string n, string c, string cF){
//Costruzione delle istanze
nome = n;
cognome = c;
codFISC = cF;
cout << "\n -- Costruzione Oggetto \"aln\" -- \n";
}
public:
~Persona(){
//Distruzione delle istanze
cout << "\n -- Distruzione oggetto \"person\" -- \n";
}
public:
Persona(){ //Costruttore obbligatorio per ereditare
//Vuoto
}
public:
void print(){
//Stampa Dati
cout << "\nDati Informativi\n\n";
cout << nome << endl << cognome << endl << codFISC << endl << endl;
}
};
class Studente : Persona{
//Dichiarazioni variabili "Studente"
string matr;
string corso;
public:
Studente(string m, string cor){
//Costruzione delle istanze
matr = m;
corso = cor;
cout << "\n -- Costruzione Oggetto \"aln\" -- \n" << endl;
}
public:
~Studente(){ //Distruzione delle istanze
cout << "\n -- Distruzione oggetto \"aln\" -- \n";
}
public:
void print(){
//Stampa dati "Studente"
cout << "\nDati Aggiuntivi\n\n";
cout << matr << endl << corso << endl;
}
};
int main(){
string n;
string c;
string cF;
cout << "Inserisci il Nome, il Cognome e il Codice Fiscale della Persona: \n";
cin >> n >> c >> cF;
Persona pers(n, c, cF);
pers.print();
pers.~Persona();
string m;
string cor;
cout << "\n\nInserisci il Numero di Matricola e il Corso di Laurea frequentato dallo Suedente: \n";
cin >> m >> cor;
Studente aln(m, cor);
aln.print();
aln.~Studente();
cout << endl << endl;
system("PAUSE");
return 0;
}
Questo che mi succede è uno spreco delle risorse o non implica niente? Grazie...