Differenza tra costruttore e distruttore

Autore: Laura McKinney
Data Della Creazione: 1 Aprile 2021
Data Di Aggiornamento: 4 Maggio 2024
Anonim
FI26. Programmazione Orientata agli Oggetti: Costruttori e Distruttore
Video: FI26. Programmazione Orientata agli Oggetti: Costruttori e Distruttore

Contenuto


Costruttore e distruttore sono le funzioni membro con lo stesso nome della loro classe. Il primo tipo costruttore aiuta a inizializzare un oggetto. Al contrario, a distruttore è diverso dal costruttore che elimina il costruttore creato quando non serve a nulla.

A volte è necessario inizializzare una parte di un oggetto prima che possa essere utilizzato. Ad esempio, stiamo operando sullo stack, prima di eseguire qualsiasi azione, la parte superiore dello stack deve essere sempre impostata su zero. Questa funzione di inizializzazione automatica viene eseguita tramite "Costruttore". Ad esempio, se un oggetto deve eseguire un codice prima di essere distrutto. Ad esempio, se un oggetto deve chiudere un file che era stato aperto, prima della sua distruzione. Può essere eseguito con l'aiuto di "Destructor".

Esaminiamo alcune delle differenze fondamentali tra costruttore e distruttore con l'aiuto di una tabella comparativa


  1. Tabella di comparazione
  2. Definizione
  3. Differenze chiave
  4. Conclusione

Tabella di comparazione:

Base per il confrontoCostruttoreDistruttore
Scopo

Alloca la memoria a un oggetto.Distribuisce la memoria di un oggetto.
Dichiarazione class_name (eventuali argomenti) {};~ class_name (nessun argomento) {};
argomenti Il costruttore accetta l'argomento Il distruttore non accetta alcun argomento.
chiamataIl costruttore viene chiamato automaticamente, mentre l'oggetto viene creato.Il distruttore viene chiamato automaticamente, quando il blocco viene chiuso o il programma termina.
LavoroIl costruttore consente a un oggetto di inizializzare parte del suo valore prima che venga utilizzato.Il distruttore consente a un oggetto di eseguire del codice al momento della sua distruzione.
Ordine di esecuzione

I costruttori vengono chiamati in ordine successivo.
I distruttori sono chiamati in ordine inverso rispetto al costruttore.
In numeri Ci possono essere più costruttori in una classe.C'è sempre un singolo distruttore nella classe.
Costruttore di copie Copia costruttore consente a un costruttore di dichiarare e inizializzare un oggetto da un altro oggetto.Nessun concetto del genere.
Sovraccarico I costruttori possono essere sovraccarichi.Il distruttore non può essere sovraccaricato.


Definizione di costruttore:

UN costruttore è fondamentalmente una funzione membro della classe, che inizializza l'oggetto e alloca memoria ad esso. I costruttori possono essere facilmente identificati in quanto dichiarati e definiti con lo stesso nome di quello della classe. Un costruttore non ha alcun tipo di ritorno; quindi, non restituiscono nulla, nemmeno "vuoto". Un costruttore è sempre definito nella sezione pubblica di una classe.

Ci possono essere più costruttori in una classe; possono essere distinti in base al numero e al tipo di argomenti passati. Se ci sono più costruttori in una classe; costruttore implicito (costruttore del nulla) deve essere definito insieme a loro; non fa altro che soddisfare il compilatore.

I costruttori possono anche essere definiti con gli argomenti predefiniti. Considerando che, inoltre, inizializzano l'oggetto "in modo dinamico". I costruttori non possono né essere ereditati, né possono essere virtuali, ma possono essere sovraccaricati. Non possono essere indirizzati al loro indirizzo.

Tipi di costruttori

Esistono fondamentalmente tre tipi di costruttori: predefinito, parametrizzato e costruttori di copie.

  • Costruttore predefinito: È un costruttore in cui non viene fornito alcun argomento al costruttore. Il costruttore predefinito non ha parametri, ma i valori al costruttore predefinito possono essere passati per impostazione predefinita (dinamicamente).
  • Costruttore parametrizzato: Questo tipo di costruttore accetta gli argomenti; possiamo trasmettere valori diversi ai membri dei dati come argomenti.
  • Costruttore di copie: Copia costruttore è diverso dagli altri tipi di costruttori perché accetta l'indirizzo dell'altro oggetto come argomento.

Implementazione del costruttore:

class Const {int a, b; public: Const () // costruttore senza parametro {a = 0; b = 0; } Const (int c, int d) {// costruttore con il parametro a = c; c = d; }}; int main () {Const C1; C2 (10,20); // questa affermazione richiama il costruttore}

Quando viene creato C1 viene eseguito un costruttore senza parametri, poiché C1 non passa alcun parametro. Mentre, quando viene creato C2, viene eseguito un costruttore con parametro, poiché passa due numeri interi al costruttore.

Definizione di distruttore:

UN Distruttore è anche una funzione membro di una classe, che alloca la memoria allocata a un oggetto. È definito con lo stesso nome di quello di una classe, preceduto da a tilde (~) simbolo. I distruttori sono sempre chiamati nell'ordine inverso dei costruttori.

C'è sempre un singolo distruttore in una classe, in quanto non accetta alcun argomento. Gli oggetti locali vengono distrutti non appena il controllo dell'esecuzione lascia il blocco; d'altra parte, gli oggetti globali vengono distrutti al termine dell'intero programma. Un distruttore viene chiamato implicitamente da un compilatore. Se le classi vengono ereditate e una classe viene derivata da una classe padre e sia la classe figlio che una classe genitore hanno distruttori; quindi, viene chiamato per primo il distruttore della classe derivata, seguito dal distruttore della classe genitore.

Implementazione di Destructor:

class Const {int a, b; public: Const (int c, int d) // costruttore con parametro. {a = c; c = d; cout << "il valore di aeb sono" <<>

Quando viene creato l'oggetto C1, viene richiamato un costruttore con due parametri di tipo intero e il membro "a, b" viene inizializzato e il valore di "a, b" viene modificato. Dopo che quel distruttore viene invocato, viene "distrutto l'oggetto C1".

Necessità di distruttore

La creazione del costruttore consuma una certa quantità di spazio di memoria, poiché alla fine alloca memoria agli oggetti. Questa memoria allocata deve essere deallocata prima di distruggere gli oggetti per liberare le risorse per altre attività. I distruttori sono estremamente utili per lo scopo previsto, che distrugge efficacemente gli oggetti e svolge attività di pulizia per liberare la memoria.

  1. Lo scopo principale di un costruttore è di allocare memoria agli oggetti quando vengono creati. Al contrario, lo scopo principale di un distruttore è di deallocare la memoria dell'oggetto quando viene distrutto.
  2. A un costruttore è consentito accettare gli argomenti in quanto gli argomenti possono essere utilizzati per inizializzare i membri dei dati della classe. D'altra parte, un distruttore non accetta alcun argomento in quanto la sua unica opera è quella di deallocare la memoria dell'oggetto.
  3. Un costruttore viene chiamato quando viene creato un oggetto. Al contrario, un distruttore viene chiamato quando un programma viene terminato o il programma esce dal blocco in cui viene creato un oggetto.
  4. Un costruttore viene generalmente utilizzato per inizializzare i membri dei dati della classe, mentre un distruttore viene utilizzato per consentire all'oggetto di eseguire alcune azioni prima che venga distrutto.
  5. I costruttori vengono eseguiti nell'ordine successivo, ciò significa che se esiste una classe derivata che eredita la classe base e viene creato l'oggetto della classe derivata, chiamerà prima il costruttore della classe base e quindi il costruttore della classe derivata. Al contrario, il distruttore della classe derivata viene chiamato per primo e poi la classe base significa che un distruttore viene eseguito in ordine inverso rispetto al costruttore.
  6. In classe, possono esserci più costruttori identificati dal numero di argomenti passati mentre può avere un solo distruttore.
  7. Esiste un concetto di costruttore di copie che consente a un oggetto di essere inizializzato da un altro oggetto mentre il distruttore non ha tale concetto.
  8. I costruttori possono essere sovraccarichi per eseguire azioni diverse sotto il nome dello stesso costruttore. Al contrario, i distruttori non possono essere sovraccaricati.

Conclusione:

Oltre alla somiglianza, che costruttore e distruttore sono la funzione membro speciale di una classe e possiedono lo stesso nome, la differenza essenziale tra entrambi è, "costruttore" viene chiamato al momento dell'allocazione della memoria e "distruttore" viene chiamato al tempo di deallocazione della memoria degli oggetti. Sia il costruttore che il distruttore vengono chiamati implicitamente dal compilatore anche se non sono definiti nella classe.