Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Dichiarazione di Oggetti
Forum - C/C++ - Dichiarazione di Oggetti

Avatar
puffin (Normal User)
Rookie


Messaggi: 30
Iscritto: 18/07/2009

Segnala al moderatore
Postato alle 23:41
Martedì, 11/08/2009

Se creo una classe Complessi. E creo una istanza di questa classe in questo modo

Complessi c
Complessi *c=new Complessi();

che differenza c'è, tra usare e non usare la new?, voglio dire non viene allocata memoria nell'heap comunque?

Visto che è un oggetto, il distruttore non serve per deallocare memoria nell'heap?

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 23:47
Martedì, 11/08/2009
No, nel primo caso viene allocata sullo stack(e non necessita di delete, perchè viene distrutta alla fine dello scope).
Il distruttore è solo un metodo che viene eseguito al momento della distruzione dell'oggetto, di solito viene usato per liberare la memoria allocata dalla classe(non la memoria della classe, non ti confondere), ma ci puoi mettere quello che vuoi.

PM Quote
Avatar
puffin (Normal User)
Rookie


Messaggi: 30
Iscritto: 18/07/2009

Segnala al moderatore
Postato alle 23:51
Martedì, 11/08/2009
Testo quotato

Postato originariamente da manvb.net:

No, nel primo caso viene allocata sullo stack(e non necessita di delete, perchè viene distrutta alla fine dello scope).
Il distruttore è solo un metodo che viene eseguito al momento della distruzione dell'oggetto, di solito viene usato per liberare la memoria allocata dalla classe(non la memoria della classe, non ti confondere), ma ci puoi mettere quello che vuoi.



cioè cancella l'oggetto instanziato da Complessi dall'Heap

PM Quote
Avatar
manvb.net (Member)
Guru


Messaggi: 663
Iscritto: 28/01/2008

Segnala al moderatore
Postato alle 23:54
Martedì, 11/08/2009
Testo quotato

Postato originariamente da puffin:

cioè cancella l'oggetto instanziato da Complessi dall'Heap



Non l'oggetto stesso(che viene cancellato da delete), ma la memoria allocata dalle funzioni dell'oggetto, ti faccio un esempio:

Codice sorgente - presumibilmente C/C++

  1. class A
  2. {
  3. public:
  4. char* b;
  5.   void Alloca()
  6.   {
  7.     b = new char[50];
  8.   }
  9.   ~A()
  10.   {
  11.     delete [] b; //Nel distruttore distruggo b, ma non la classe stessa
  12.   }
  13. };


Ultima modifica effettuata da manvb.net il 11/08/2009 alle 23:55
PM Quote
Avatar
puffin (Normal User)
Rookie


Messaggi: 30
Iscritto: 18/07/2009

Segnala al moderatore
Postato alle 0:04
Mercoledì, 12/08/2009
sisi
ogni tipo oggetto un suo distruttore (b) ma non distrugge la classe dentro il quale stà

Si si è logico

PM Quote