Quando cessa di esistere un oggetto?
Non so rispondere.
Ecco: sono arrivato a una conclusione.
Un oggetto per il quale venga allocata la memoria in modo... statico (?) si distrugge solo alla fine del programma.
Credo...
Ecco: ho creato una classe con un distruttore, nel quale vi sono le istruzioni di stampare qualcosa a video e poi attendere nuovamente la pressione di un tasto.
Il distruttore entra in azione alla fine del programma, quando l'oggetto cessa di esistere.
#include<stdio.h>
class Rettangolo{
int base, altezza;
public:
Rettangolo();
~Rettangolo();
int area();
};
Rettangolo::Rettangolo(){
base=3;
altezza=5;
}
Rettangolo::~Rettangolo(){
printf("distruggo");
getc(stdin);
}
int Rettangolo::area(){
return(base*altezza);
}
void main(){
Rettangolo BaseRettangolo;
printf("%u\n",BaseRettangolo.area());
getc(stdin);
}
E adesso mi ripercorro gli eventi sulla finestra:
15La finestra è in attesa dell'input (istruzione getc(stdin)).
Ora schiaccio Invio ed ecco cosa accade:
15 distruggoViene eseguito, nel momento in cui la procedura main() è cessata, il programma termina e l'oggetto cessa di esistere, il codice del distruttore, con stampa a video della stringa "distruggo" e nuova attesa di un input (nuova istruzione getc(stdin)).
Schiacciando di nuovo Invio, la finestra sparisce e il programma è terminato.
Nessun commento:
Posta un commento