Diferencia entre constructor y destructor

Autor: Laura McKinney
Fecha De Creación: 1 Abril 2021
Fecha De Actualización: 13 Mayo 2024
Anonim
Constructores y Destructores en Programacion Orientada a Objetos
Video: Constructores y Destructores en Programacion Orientada a Objetos

Contenido


Constructor y destructor son las funciones miembro con el mismo nombre que su clase. El tipo anterior constructor Ayuda a inicializar un objeto. Por el contrario, un incinerador de basuras es diferente del constructor que elimina el constructor creado cuando no sirve de nada.

A veces es necesario inicializar alguna parte de un objeto antes de que pueda ser utilizado. Por ejemplo, estamos operando en la pila, antes de realizar cualquier acción, la parte superior de la pila siempre debe establecerse en cero. Esta característica de inicialización automática se realiza a través de "Constructor". Como si un objeto necesita ejecutar algún código antes de ser destruido. Por ejemplo, si un objeto necesita cerrar un archivo que había abierto, antes de su destrucción. Se puede realizar con la ayuda de "Destructor".

Veamos algunas de las diferencias fundamentales entre constructor y destructor con la ayuda de un cuadro comparativo


  1. Cuadro comparativo
  2. Definición
  3. Diferencias clave
  4. Conclusión

Cuadro comparativo:

Bases para la comparaciónConstructorIncinerador de basuras
Propósito

Asigna la memoria a un objeto.Desasigna la memoria de un objeto.
Declaración nombre_clase (argumentos si los hay) {};~ class_name (sin argumentos) {};
Argumentos El constructor acepta argumentos Destructor no acepta ningún argumento.
VocaciónSe llama al constructor automáticamente, mientras se crea el objeto.Se llama al destructor automáticamente, cuando se sale del bloque o el programa termina.
TrabajandoConstructor permite que un objeto inicialice parte de su valor antes de usarlo.Destructor permite que un objeto ejecute algo de código en el momento de su destrucción.
Orden de ejecución

Los constructores se llaman en orden sucesivo.
Destructor se llama en orden inverso de constructor.
En números Puede haber múltiples constructores en una clase.Siempre hay un único destructor en la clase.
Copiar constructor Copiar constructor permite a un constructor declarar e inicializar un objeto desde otro objeto.No existe ese concepto.
Sobre carga Los constructores pueden sobrecargarse.Destructor no se puede sobrecargar.


Definición de constructor:

UNA constructor es básicamente una función miembro de clase, que inicializa el objeto y le asigna memoria. Los constructores se pueden identificar fácilmente a medida que se declaran y definen con el mismo nombre que el de la clase. Un constructor no tiene ningún tipo de retorno; por lo tanto, no devuelven nada, ni siquiera "nulo". Un constructor siempre se define en la sección pública de una clase.

Puede haber múltiples constructores en una clase; se pueden distinguir en función del número y tipo de argumentos pasados. Si hay múltiples constructores en una clase; el constructor implícito (constructor de no hacer nada) debe definirse junto con ellos; no hace nada pero satisface al compilador.

Los constructores también se pueden definir con los argumentos predeterminados. Mientras que, también inicializan el objeto "dinámicamente". Los constructores no pueden ser heredados, ni pueden ser virtuales, pero pueden sobrecargarse. No pueden ser referidos a su dirección.

Tipos de constructores

Básicamente, existen tres tipos de constructores: constructores predeterminados, parametrizados y de copia.

  • Constructor predeterminado: Es un constructor donde no se le da argumento al constructor. El constructor predeterminado no tiene ningún parámetro, pero los valores al constructor predeterminado se pueden pasar de forma predeterminada (dinámicamente).
  • Constructor parametrizado: Este tipo de constructor toma los argumentos; Podemos pasar diferentes valores a los miembros de datos como argumentos.
  • Copiar constructor: El constructor de copia es diferente de otros tipos de constructores porque acepta la dirección del otro objeto como argumento.

Implementación de constructor:

clase Const {int a, b; public: Const () // constructor sin parámetro {a = 0; b = 0; } Const (int c, int d) {// constructor con parámetro a = c; c = d; }}; int main () {Const C1; C2 (10,20); // esta declaración invoca al constructor}

Cuando se crea C1, se ejecuta un constructor sin parámetro, ya que C1 no pasa ningún parámetro. Mientras que, cuando se crea C2, se ejecuta un constructor con parámetro, ya que está pasando dos enteros al constructor.

Definición de Destructor:

UNA Incinerador de basuras también es una función miembro de una clase, que desasigna la memoria asignada a un objeto. Se define con el mismo nombre que el de una clase, precedido por un tilde (~) símbolo. Los destructores siempre se llaman en el orden inverso de los constructores.

Siempre hay un único destructor en una clase, ya que no acepta ningún argumento. Los objetos locales se destruyen tan pronto como el control de la ejecución deja el bloque; Por otro lado, los objetos globales se destruyen cuando todo el programa termina. Un destructor es llamado implícitamente por un compilador. Si las clases se heredan, y una clase se deriva de una clase primaria, y tanto la clase secundaria como la clase primaria tienen destructores; luego, el destructor de la clase derivada se llama primero, seguido por el destructor de la clase primaria.

Implementación de Destructor:

clase Const {int a, b; public: Const (int c, int d) // constructor con parámetro. {a = c; c = d; cout << "el valor de a y b son" <<>

Cuando se crea el objeto C1, se invoca un constructor con dos parámetros de tipo entero y se inicializa el miembro "a, b" y se edita el valor de "a, b". Después de que el destructor se invoca y se "destruye el objeto C1".

Necesidad de destructor

La creación del constructor consume cierta cantidad de espacio de memoria, ya que finalmente asigna memoria a los objetos. Esta memoria asignada debe ser desasignada antes de destruir los objetos para liberar los recursos para otras tareas. Los destructores son extremadamente útiles para el propósito previsto, que destruye efectivamente los objetos y realiza tareas de limpieza para liberar la memoria.

  1. El propósito principal de un constructor es asignar memoria a los objetos cuando se crean. Por el contrario, el objetivo principal de un destructor es desasignar la memoria del objeto cuando se destruye.
  2. Un constructor puede aceptar los argumentos ya que los argumentos se pueden usar para inicializar los miembros de datos de la clase. Por otro lado, un destructor no acepta ningún argumento, ya que su único trabajo es desasignar la memoria del objeto.
  3. Se llama a un constructor cuando se crea un objeto. Por el contrario, se llama a un destructor cuando se termina un programa o el programa sale del bloque en el que se crea un objeto.
  4. Un constructor se usa generalmente para inicializar los miembros de datos de la clase, mientras que un destructor se usa para permitir que el objeto realice alguna acción antes de ser destruido.
  5. Los constructores se ejecutan en el orden sucesivo, lo que significa que si hay una clase derivada que hereda la clase base y se crea el objeto de la clase derivada, primero llamará al constructor de la clase base y luego al constructor de la clase derivada. Por el contrario, el destructor de la clase derivada se llama primero y luego la clase base significa que un destructor se ejecuta en orden inverso del constructor.
  6. En clase, puede haber múltiples constructores que se identifican por los argumentos numéricos pasados, mientras que solo puede tener un destructor.
  7. Existe un concepto de constructor de copia que permite que un objeto se inicialice desde otro objeto mientras que el destructor no tiene dicho concepto.
  8. Los constructores pueden sobrecargarse para realizar diferentes acciones bajo el nombre del mismo constructor. Por el contrario, los destructores no se pueden sobrecargar.

Conclusión:

Además de la similitud, ese constructor y destructor son la función miembro especial de una clase y poseen el mismo nombre, la diferencia esencial entre ambos es que se llama 'constructor' en el momento de la asignación de memoria y se llama 'destructor' en el tiempo de desasignación de memoria de objetos. Tanto el constructor como el destructor son llamados implícitamente por el compilador aunque no estén definidos en la clase.