Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Che cos'è un distruttore della classe | Costruttori e Distruttori
OOP in C++

bookChe cos'è un distruttore della classe

Note
Definizione

I distruttori sono funzioni membro speciali che vengono invocate quando termina la vita di un object's. Il loro scopo principale è rilasciare le risorse che l'oggetto potrebbe aver acquisito durante la sua esistenza.

Sintassi del distruttore

Anche se hanno scopi opposti, creare un distruttore è molto simile a creare un costruttore. Condividono quasi gli stessi principi di dichiarazione. L'approccio generale per crearne uno è:

  • Nome: ha lo stesso nome della classe, ma è preceduto da una tilde (~);
  • Nessun tipo di ritorno: non ha un tipo di ritorno, nemmeno void;
  • Nessun parametro: non può accettare parametri;
  • Invocazione automatica: viene chiamato automaticamente dal compilatore quando l'oggetto esce dallo scope o viene eliminato esplicitamente.

Invocazione automatica dei distruttori

L'invocazione automatica dei distruttori si riferisce alla chiamata automatica del distruttore. Questo garantisce che le risorse detenute dall'oggetto vengano rilasciate correttamente, contribuendo così a prevenire perdite di memoria e di risorse.

scope.cpp

scope.cpp

delete.cpp

delete.cpp

termination.cpp

termination.cpp

copy
123456
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
  • quando un oggetto esce dall'ambito;
  • quando l'operatore delete viene utilizzato per eliminare oggetti allocati dinamicamente;
  • quando il programma termina.

Necessità dei Distruttori

Lo scopo principale di un distruttore è rilasciare le risorse acquisite dall'oggetto durante il suo ciclo di vita. Questo include la chiusura di handle di file, la deallocazione della memoria (utilizzando new) o compiti simili.

ResourceHolder.cpp

ResourceHolder.cpp

FileHandler.cpp

FileHandler.cpp

copy
123456789101112
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };

1. Qual è lo scopo principale di un distruttore?

2. Qual è la sintassi per dichiarare un distruttore?

question mark

Qual è lo scopo principale di un distruttore?

Select the correct answer

question mark

Qual è la sintassi per dichiarare un distruttore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Suggested prompts:

Mi faccia domande su questo argomento

Riassuma questo capitolo

Mostri esempi dal mondo reale

Awesome!

Completion rate improved to 3.13

bookChe cos'è un distruttore della classe

Scorri per mostrare il menu

Note
Definizione

I distruttori sono funzioni membro speciali che vengono invocate quando termina la vita di un object's. Il loro scopo principale è rilasciare le risorse che l'oggetto potrebbe aver acquisito durante la sua esistenza.

Sintassi del distruttore

Anche se hanno scopi opposti, creare un distruttore è molto simile a creare un costruttore. Condividono quasi gli stessi principi di dichiarazione. L'approccio generale per crearne uno è:

  • Nome: ha lo stesso nome della classe, ma è preceduto da una tilde (~);
  • Nessun tipo di ritorno: non ha un tipo di ritorno, nemmeno void;
  • Nessun parametro: non può accettare parametri;
  • Invocazione automatica: viene chiamato automaticamente dal compilatore quando l'oggetto esce dallo scope o viene eliminato esplicitamente.

Invocazione automatica dei distruttori

L'invocazione automatica dei distruttori si riferisce alla chiamata automatica del distruttore. Questo garantisce che le risorse detenute dall'oggetto vengano rilasciate correttamente, contribuendo così a prevenire perdite di memoria e di risorse.

scope.cpp

scope.cpp

delete.cpp

delete.cpp

termination.cpp

termination.cpp

copy
123456
int main() { { Example obj; // Object created } // Object goes out of scope here, destructor is invoked }
  • quando un oggetto esce dall'ambito;
  • quando l'operatore delete viene utilizzato per eliminare oggetti allocati dinamicamente;
  • quando il programma termina.

Necessità dei Distruttori

Lo scopo principale di un distruttore è rilasciare le risorse acquisite dall'oggetto durante il suo ciclo di vita. Questo include la chiusura di handle di file, la deallocazione della memoria (utilizzando new) o compiti simili.

ResourceHolder.cpp

ResourceHolder.cpp

FileHandler.cpp

FileHandler.cpp

copy
123456789101112
class ResourceHolder { public: DynamicArray(int size) { data = new int(100); } ~DynamicArray() { delete data; } private: int* data; };

1. Qual è lo scopo principale di un distruttore?

2. Qual è la sintassi per dichiarare un distruttore?

question mark

Qual è lo scopo principale di un distruttore?

Select the correct answer

question mark

Qual è la sintassi per dichiarare un distruttore?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 7
some-alt