Chiamare costruttori e distruttori

di il
4 risposte

Chiamare costruttori e distruttori

Salve sto creando un programma che chiama i costruttori e distruttori in c++ il codice che ho scritto è questo:

# include <iostream>

using namespace std;


class Creaedistruggi {
public:
Creaedistruggi (int); //costruttore
~Creaedistruggi();//distruttore
private:
int data; };

void crea (void)
{
Creaedistruggi quattro (4);
}



Creaedistruggi::Creaedistruggi (int value)
{
data = value;
cout << "L'oggetto " << data<<" e' costruito";
}

Creaedistruggi::~Creaedistruggi()
{cout<<endl<<"L'oggetto "<< data<<" e' distrutto\n"; }

Creaedistruggi uno(1);

int main()
{cout<<" L'oggetto globale e' creato prima del main"<< endl;
Creaedistruggi due (2); //oggetto locale
cout<<" L'oggetto e' nel main"<< endl;
crea(); //chiama la funzione per creare l'oggetto
Creaedistruggi tre(3);
cout<<" L'oggetto e' nel main"<< endl;
cin.clear(); cin.get();
}

Il problema è che mi crea gli oggetti ma gli oggetti presenti nel main non li distrugge.
le mie domande sono:
1) gli oggetti non dovrebbero essere distrutti alla fine del main?
2) chi mi dice dove ho sbagliato e mi fa capire dov'è l'errore?

grazie 1000 a tutti

4 Risposte

  • Re: Chiamare costruttori e distruttori

    1. Usa i code tags.
    2. Non puoi vedere il distruttore di un oggetto dopo l'uscita dal main.
    3. Il tuo codice è OK. Per vedere la distruzione dell'oggetto manda l'oggetto fuori dallo scopo. ES:
    
    int main()
    {
           {
              cout<<" L'oggetto globale e' creato prima del main"<< endl;
              Creaedistruggi due (2); //oggetto locale
              cout<<" L'oggetto e' nel main"<< endl;
              crea(); //chiama la funzione per creare l'oggetto
              Creaedistruggi tre(3);
              cout<<" L'oggetto e' nel main"<< endl;
          }
          cin.clear(); cin.get();
    }
    
  • Re: Chiamare costruttori e distruttori

    Si è giusto come hai detto ma c'è ancora il primo oggetto che non è distrutto come faccio ???
    comunque grazie 1000
  • Re: Chiamare costruttori e distruttori

    L'oggetto 1 è distrutto dopo il main. Non lo puoi verificare normalmente ma devi piazzare un breakpoint al destruttore della classe dopo aver eseguito tutte le righe del main. Quindi piazza un breakpoint nel } finale e dopo vedrai su output
    L'oggetto 1 e' distrutto
  • Re: Chiamare costruttori e distruttori

    Ok.. grtazie 100000
Devi accedere o registrarti per scrivere nel forum
4 risposte