Constructor :
un constructor es una función miembro de una clase que tiene el mismo nombre que el nombre de la clase. Ayuda a inicializar el objeto de una clase. Puede aceptar los argumentos o no. Se utiliza para asignar la memoria a un objeto de la clase. Se llama cada vez que se crea una instancia de la clase. Se puede definir manualmente con argumentos o sin argumentos. Puede haber muchos constructores en una clase. Puede estar sobrecargado pero no puede ser heredado o virtual. Existe un concepto de constructor de copias que se utiliza para inicializar un objeto a partir de otro objeto.
Sintaxis:
ClassName() { //Constructor's Body }
Destructor :
Al igual que un constructor, Destructor también es una función miembro de una clase que tiene el mismo nombre que el nombre de la clase precedido por un operador de tilde (~). Ayuda a desasignar la memoria de un objeto. Se llama mientras se libera o borra el objeto de la clase. En una clase, siempre hay un solo destructor sin ningún parámetro, por lo que no se puede sobrecargar. Siempre se llama en el orden inverso del constructor. si una clase es heredada por otra clase y ambas clases tienen un destructor, entonces se llama primero al destructor de la clase secundaria, seguido del destructor de la clase principal o base.
Sintaxis:
~ClassName() { //Destructor's Body }
Nota: Si no especificamos ningún modificador de acceso para los miembros dentro de la clase, el modificador de acceso para los miembros será Privado de forma predeterminada.
Ejemplo/Implementación de Constructor y Destructor:
C++
#include <iostream> using namespace std; class Z { public: // constructor Z() { cout<<"Constructor called"<<endl; } // destructor ~Z() { cout<<"Destructor called"<<endl; } }; int main() { Z z1; // Constructor Called int a = 1; if(a==1) { Z z2; // Constructor Called } // Destructor Called for z2 } // Destructor called for z1
Producción:
Constructor called Constructor called Destructor called Destructor called
Diferencia entre Constructor y Destructor en C++:
S. No. | Constructor | Incinerador de basuras |
---|---|---|
1. | Constructor ayuda a inicializar el objeto de una clase. | Mientras que destructor se usa para destruir las instancias. |
2. | Se declara como className (argumentos si los hay) {Constructor’s Body} . | Mientras que se declara como ~ className(sin argumentos){ } . |
3. | El constructor puede aceptar argumentos o no. | Si bien no puede tener ningún argumento. |
4. | Se llama a un constructor cuando se crea una instancia u objeto de una clase. | Se llama mientras se libera o elimina el objeto de la clase. |
5. | El constructor se utiliza para asignar la memoria a una instancia u objeto. | Mientras que se utiliza para desasignar la memoria de un objeto de una clase. |
6. | El constructor puede estar sobrecargado. | Si bien no se puede sobrecargar. |
7. | El nombre del constructor es el mismo que el nombre de la clase. | Aquí, su nombre también es el mismo que el nombre de la clase precedido por el operador de mosaico (~). |
8. | En una clase, puede haber múltiples constructores. | Mientras que en una clase, siempre hay un solo destructor. |
9. | Existe un concepto de constructor de copias que se utiliza para inicializar un objeto a partir de otro objeto. | Mientras que aquí, no existe el concepto de destructor de copias. |
10 | A menudo se llaman en orden sucesivo. | A menudo se les llama en orden inverso al constructor. |