#include<iostream>
using namespace std;
class persona
{
public:
persona();
persona(int a);
~persona();
void aggiorna();
void visualizza();
private:
char nome[15];
char cognome[15];
int eta;
};
persona::persona()
{
cout<<endl<<"inserire nome: ";
cin>>nome;
cout<<endl<<"inserire cognome: ";
cin>>cognome;
cout<<endl<<"inserire età: ";
cin>>eta;
}
persona::persona(int a)
{
cout<<"inserire nome: ";
cin>>nome;
cout<<endl<<"inserire cognome: ";
cin>>cognome;
eta=a;
}
void persona::visualizza()
{
cout<<"dati inseriti:"<<endl<<"nome:"<<nome<<endl<<"cognome:"<<cognome<<endl<<"età:"<<eta;
}
persona::~persona()
{
cout<<endl<<"destruction derby";
}
void persona::aggiorna()
{
char ins;
cout<<"quali dati si desiderano aggiornare?"<<endl<<"n--> nome c-->cognome e-->età ";
cin>>ins;
switch(ins)
{
case 'n': cout<<"inserire nuovo nome: ";
cin>>nome;
break;
case 'c': cout<<"inserire nuovo cognome: ";
cin>>cognome;
break;
case 'e': cout<<"inserire nuova età: ";
cin>>eta;
break;
}
}
main()
{
char scelta;
int i;
persona dipendente;
do
{
dipendente.visualizza();
cout<<endl<<"si desidera modificare i dati?s-n ";
cin>>scelta;
if(scelta=='s')
dipendente.aggiorna();
}while(scelta!='n');
persona dipv(18);
dipv.visualizza();
persona dip[3];
for(i=0;i<3;i++)
{
cout<<endl<<"dipendente "<<i;
dip [i].visualizza();
}
}
Come si può notare nella classe sono stati dichiarati due costruttori con parametri diversi e un solo distruttore. nel main invece sono state effettuate delle prove con diversi tipi di oggetti:
persona dipendente: dichiarato un oggetto senza parametri, quindi viene invocato il costruttore di default.
persona dipv(18): dichiarato un oggetto con un parametro int, quindi verrà chiamato il costruttore con il parametro int.
persona dip[3]: dichiarato un array di oggetti (3 in questo caso), quindi, non avendo ulteriori parametri, verrà invocato il cotruttore di default. Provando ad eseguire il programma si potrà notare come appena, il programma, eseguirà la linea con la dichiarazione degli oggetti il costruttore venga chiamato 3 volte di seguito.
Si può notare inoltre che prima della fine del programma il distruttore venga invocato 5 volte per liberare la memoria di tutti gli oggetti.
Nessun commento:
Posta un commento