Colección de citas famosas - Slogan de motivación - Explicación detallada de los constructores y destructores de C++

Explicación detallada de los constructores y destructores de C++

El constructor y el destructor de C++ se explican en detalle a continuación:

1. Introducción al constructor

En el capítulo anterior, después de crear el objeto de la clase, primero Después de asignar un valor a cada uno de sus atributos miembros, realice una operación de salida sobre ellos. Si se generan sin asignar un valor, estos valores serán valores basura. Para facilitar la introducción del código, las clases de C++ proporcionan un constructor de funciones para inicializar todas las propiedades de los miembros a la vez.

C++ proporciona constructores para manejar la inicialización de objetos.

1. El constructor es una función miembro especial que no necesita ser llamada por el usuario y se ejecuta automáticamente cuando se define el objeto.

2. El nombre del constructor es el mismo que el nombre de la clase y no tiene tipo de retorno.

3. El usuario puede definir la implementación por sí mismo, diseñar e inicializar los miembros de datos según sea necesario y aun así establecer los parámetros predeterminados de la función.

4. Si no definimos un constructor, el sistema definirá automáticamente un constructor predeterminado sin parámetros. No realiza ninguna operación en las propiedades del miembro. Si definimos el constructor nosotros mismos, el sistema lo hará. not Se creará un constructor predeterminado para nosotros.

2. Constructor de parámetros predeterminado

Constructor CTime(){} con parámetros: dicho constructor proporciona una inicialización de tres propiedades de miembros al declarar el objeto. CTimetime (Hora, Minuto, Segundo); // Definición del objeto CTime (intHour, intMinute, intSecond) {m_nHour=Hour; m_nMinute=Minute; m_nSecond=Second;}

Después de tener el constructor, se llama al constructor. cuando declaramos los parámetros pasados ​​es equivalente al código comentado a continuación. En este momento, debido a que no existe un constructor predeterminado, ya no podemos crear objetos sin pasar parámetros como en el capítulo anterior.

3. Sobrecarga de constructores

Puede haber varios constructores en una clase y constituyen la sobrecarga de funciones. Los dos constructores siguientes constituyen una sobrecarga. Podemos llamar a diferentes constructores pasando diferentes parámetros al declarar el objeto. En este momento, aún no puede pasar parámetros al objeto como en el capítulo anterior y no es necesario inicializarlos uno por uno. El constructor hace todo esto.

Cuando se crea el objeto, se llamarán diferentes constructores según los tipos de parámetros pasados, lo cual es consistente con las llamadas a funciones ordinarias. Este es un constructor con parámetros predeterminados. El uso de funciones con parámetros predeterminados es el mismo que nuestras reglas en el capítulo de funciones.

Todos los parámetros del constructor intermedio tienen valores predeterminados. Esto no está permitido. Cuando hay tres constructores, cuando creamos un objeto sin pasar parámetros, se debe llamar ¿El primer constructor predeterminado sin parámetros? ¿O es el segundo constructor el que se ajusta a las reglas de parámetros predeterminadas? Esto crea ambigüedad y es inaceptable.

4. Introducción al destructor

Su función es opuesta a la del constructor. Generalmente realiza el trabajo de limpieza del objeto cuando finaliza el ciclo de vida del objeto. será llamado automáticamente. La función del destructor no es eliminar el objeto, sino realizar un trabajo de limpieza antes de que el objeto cancele la memoria que ocupa. Después de la limpieza, el sistema puede reciclar y reutilizar esta parte de la memoria.

Al diseñar esta clase, el sistema también proporcionará un destructor por defecto. Al final del ciclo de vida del objeto, el programa ejecutará automáticamente el destructor para completar estas tareas. Igual que el constructor, definido por el usuario y llamado automáticamente por el sistema.

1. El destructor no tiene valor de retorno ni parámetros.

2. No hay parámetros, por lo que no se puede sobrecargar. Una clase tiene un solo destructor.

3. Además de liberar trabajo, el destructor también puede realizar algún trabajo que el usuario desee, como generar cierta información.

En quinto lugar, las reglas de nomenclatura son las siguientes:

~CTime(); se define de la siguiente manera: Para mostrar cuándo se llama a este destructor, lo usamos para generar una oración. para informarnos que fue llamado.

Los resultados de la ejecución son los siguientes: Creamos cuatro objetos CTime en la función principal, por lo que después de salir de la función principal, los ciclos de vida de los cuatro objetos finalizan y el destructor se llama cuatro veces.

Si creamos el objeto fuera de la función principal, el objeto será destruido después de salir del programa. El orden en que los destructores destruyen los objetos es el inverso al orden en que se construyen. Debido a que los objetos se almacenan en la pila, la característica de la pila es que el primero en entrar es el último en salir.

Si usamos el nuevo operador para crear dinámicamente un objeto, el objeto no se destruirá automáticamente. Necesitamos usar eliminar manualmente para destruirlo. En este momento, se llamará al destructor con el uso de. eliminar, este objeto ya no se destruirá cuando finalice el programa.