contador Saltar al contenido

Difference between builder and destroyer

Sometimes it is necessary to initialize part of an object before it can be used. For example, we are operating on the stack, before performing any action, the top of the stack must always be set to zero. This automatic initialisation function is performed via "Manufacturer". Probably, if an object needs to run some code before it is destroyed. For example, if an object needs to close a file it had opened, before it is destroyed. It can be run with the help of 'Destructor'.

Let's see some of the basic differences between builder and destructor with the help of the comparison table

Comparative chart:

Basis for comparison BuilderDistructor
Purpose Allocates memory to an object. It lays the memory of an object.
Declaration class_name (arguments if any) {}; ~ class_name (no arguments) {};
arguments The constructor accepts arguments The destroyer accepts no argument.
call The constructor is called automatically while the object is created. The destructor is called automatically when the block is closed or the program ends.
Work The constructor allows the object to initialize part of its value before it is used. The destructor allows the object to execute code when it is destroyed.
Execution order The builders are called in the next order. Destroyers are called in reverse order from the manufacturer.
In numbers There may be multiple builders in the class. But there is always a single destroyer in the class.
Copy the manufacturer The copy constructor allows a constructor to declare and initialize an object from another object. No such concept.
Overload Builders can be overloaded. The destroyer cannot be overloaded.

Builder Definition:

A constructor basically a class member function, which initializes the object and allocates memory to it. Constructors can be easily identified as they are declared and defined with the same name as those in the class. A builder has no return whatsoever; therefore, they do not return anything, not even "empty". A constructor always defined in the public section of a class.

There can be multiple constructors in a class; they can be distinguished by the number and type of topics passed. If there are multiple constructors in a class; implicit constructor (no-do constructor) must be defined together with them; does nothing but, satisfies the compiler.

Constructors can also be defined with predefined arguments. While, they also initialize the object "dynamically". Constructors cannot be inherited, nor can they be virtual, but they can be overloaded. They cannot be addressed to their address.

Manufacturer implementation:

 classe Const {int a, b; public: Const () {// costruttore con nessun parametro a = 0; b = 0; } Const (int c, int d) {// costruttore con parametro a = c; c = d; }}; int main () {Const C1; C2 (10, 20); // questa istruzione invoca il costruttore} 

When C1 is created, a constructor without parameters is executed, since C1 does not pass any parameters. While, when C2 is created, a constructor with parameter is executed, as it is passing two integers to the constructor.

Definition of Destructor:

A Destructor also a member function of a class, which releases the memory allocated to an object. defined with the same name as that of a class, preceded by a tilde symbol (~). Destroyers are always called in the reverse order of builders.

There is always a single destroyer in a class, as it does not accept any arguments. Local objects are destroyed as soon as execution control has left the block; on the other hand, global objects are destroyed when the whole program ends. A destructor is implicitly called by a compiler. If classes are inherited and a class derived from the parent class and both the daughter class and a parent class have destructors; therefore, the destructor of the derived class is called first, followed by the destructor of the parent class.

Destructor implementation:

 classe Const {int a, b; public: Const (int c, int d) {// costruttore con parametro. a = c; c = d; cout 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 stampato. Dopo che quel distruttore viene richiamato e stampa il messaggio "l'oggetto C1 viene distrutto".

Differenza chiave tra costruttori e distruttori

  1. Lo scopo principale di un costruttore di allocare memoria agli oggetti quando vengono creati mentre, lo scopo principale di un distruttore di deallocare la memoria dell'oggetto quando viene distrutto.
  2. Un costruttore pu accettare gli argomenti in quanto gli argomenti possono essere utilizzati per inizializzare i membri dati della classe. Un distruttore non accetta argomenti poich la sua unica funzione quella di deallocare la memoria dell'oggetto.
  3. Un costruttore viene chiamato quando viene creato un oggetto. D'altra parte, un distruttore viene chiamato quando un programma viene terminato o il programma esce dal blocco in cui viene creato l'oggetto.
  4. Generalmente un costruttore viene utilizzato per inizializzare i membri dei dati della classe, mentre un distruttore viene utilizzato per consentire all'oggetto di eseguire un'azione prima che venga distrutto.
  5. I costruttori vengono eseguiti nell'ordine successivo, il che significa che se esiste una classe derivata che eredita la classe base e l'oggetto della classe derivata viene creato, chiamer prima il costruttore della classe base e poi il costruttore della classe derivata. D'altra parte, il distruttore della classe derivata viene chiamato prima e quindi la classe base indica che un distruttore viene eseguito nell'ordine inverso del costruttore.
  6. In classe, ci possono essere pi costruttori che sono identificati dal numero di argomenti passati. In classe, c' solo un 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, mentre i distruttori non possono essere sovraccaricati.


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