Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. 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?


Solo Puffin ti dà Forza e Grinta a Volontà
------------------------------------------
Dijkstra:"I collaudi mostrano la presenza di errori, non la loro assenza.
Non si può provare che un progamma è corretto, ma solo che è scorretto"

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.


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
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


Solo Puffin ti dà Forza e Grinta a Volontà
------------------------------------------
Dijkstra:"I collaudi mostrano la presenza di errori, non la loro assenza.
Non si può provare che un progamma è corretto, ma solo che è scorretto"

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


"E' facile distruggere, la vera sfida è creare!"(cit. me)

"Ricordati chi sei, non permettere a nessuno di cambiarti, non perdere mai te stesso. Farai grandi cose nella vita."(cit. me)

double penetration; //ouch
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


Solo Puffin ti dà Forza e Grinta a Volontà
------------------------------------------
Dijkstra:"I collaudi mostrano la presenza di errori, non la loro assenza.
Non si può provare che un progamma è corretto, ma solo che è scorretto"

PM Quote