Recomendado, 2024

La Elección Del Editor

Diferencia entre constructor y destructor

A veces se requiere inicializar alguna parte de un objeto antes de poder utilizarlo. 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 la inicialización automática se realiza a través de 'Constructor'. Probablemente, 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 básicas entre constructor y destructor con la ayuda de la tabla de comparación

Gráfica comparativa:

Bases para la comparaciónConstructorIncinerador de basuras
Propósito
Asigna la memoria a un objeto.Se desasigna la memoria de un objeto.
Declaraciónnombre_clase (argumentos si los hay) {};~ nombre_clase (sin argumentos) {};
ArgumentosEl constructor acepta el argumentoDestructor no acepta ningún argumento.
VocaciónSe llama automáticamente al constructor, mientras se crea el objeto.El destructor se llama automáticamente, al salir del bloque o al finalizar el programa.
TrabajandoEl constructor permite que el objeto inicialice parte de su valor antes de que se use.Destructor permite que el objeto ejecute algún código en el momento de su destrucción.
Orden de ejecución
Los constructores son llamados en orden sucesivo.
Destructor son llamados en orden inverso de constructor.
En númerosPuede haber múltiples constructores en la clase.Pero siempre hay un solo destructor en la clase.
Copia ConstructorCopiar constructor permite a un constructor declarar e inicializar un objeto desde otro objeto.No hay tal concepto.
Sobre cargaLos constructores pueden estar sobrecargados.Destructor no puede ser sobrecargado.

Definición de constructor:

Un constructor es básicamente una función miembro de la clase, que inicializa el objeto y le asigna memoria. Los constructores se pueden identificar fácilmente ya que se declaran y se 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 'vacío'. 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 mas que, satisface al compilador.

Los constructores también se pueden definir con los argumentos por defecto. 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.

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 el 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ámetros, ya que C1 no pasa ningún parámetro. Mientras que, cuando se crea C2, se ejecuta un constructor con un parámetro, ya que pasa dos enteros al constructor.

Definición de destructor:

Un Destructor es también 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 símbolo de tilde (~). Los destructores siempre son llamados en el orden inverso de los constructores.

Siempre hay un solo 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 abandona el bloque; por otro lado, los objetos globales se destruyen cuando termina todo el programa. Un destructor es llamado implícitamente por un compilador. Si las clases se heredan, y una clase se deriva de la clase principal y tanto la clase secundaria como la clase principal tienen destructores; luego, el destructor de la clase derivada se llama primero, seguido del destructor de la clase principal.

Implementación de Destructor:

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

Cuando se crea el objeto C1, se invoca un constructor con dos parámetros de tipo entero y el miembro "a, b" se inicializa y se imprime el valor de "a, b". Luego de que el destructor sea invocado e imprima el mensaje "objeto C1 se destruye"

Diferencia clave entre constructores y destructores

  1. El propósito principal de un constructor es asignar memoria a los objetos cuando se crean, mientras que el propósito principal de un destructor es desasignar la memoria del objeto cuando se destruye.
  2. Se permite que un constructor acepte los argumentos ya que los argumentos se pueden usar para inicializar los miembros de datos de la clase. 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 otro lado, se llama a un destructor cuando se termina un programa o cuando el programa sale del bloque en el que se crea el objeto.
  4. Un constructor generalmente se usa 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 que se destruya.
  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, llamará primero al constructor de la clase base y luego al constructor de la clase derivada. Por otro lado, el destructor de la clase derivada se llama primero y luego la clase base significa que un destructor se ejecuta en el orden inverso del constructor.
  6. En clase, puede haber varios constructores que se identifican por los argumentos numéricos pasados. En clase, solo hay un destructor.
  7. Existe un concepto de constructor de copia que permite que un objeto se inicialice de otro objeto, mientras que el destructor no tiene tal concepto.
  8. Los constructores pueden estar sobrecargados para realizar diferentes acciones bajo el nombre del mismo constructor, mientras que los destructores no pueden sobrecargarse.

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 básica entre ambos es que se llama 'constructor' en el momento de la asignación de memoria y se llama 'destructor' al Tiempo de desasignación de memoria de objetos. Tanto el constructor como el destructor son llamados implícitamente por el compilador a pesar de que no están definidos en la clase.

Top