Chiamare costruttori e distruttori

di Anonimizzato9617 il
4 risposte
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

  • 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();
    }
    
  • Si è giusto come hai detto ma c'è ancora il primo oggetto che non è distrutto come faccio ???
    comunque grazie 1000
  • 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
  • Ok.. grtazie 100000
Devi accedere o registrarti per scrivere nel forum
4 risposte