[Resumen de aprendizaje de análisis en profundidad C ++] 22 destrucción de objetos

[Resumen de aprendizaje de análisis en profundidad C ++] 22 destrucción de objetos

Código de autor Allen , por favor indique la fuente


1. Destrucción de objetos Los objetos en la
vida se enumeran todos después de ser inicializados
y se limpiarán antes de ser destruidos.

Pregunta: ¿Cómo limpiar objetos
que necesitan ser destruidos en C ++? En términos generales, todos los objetos que necesitan ser destruidos deben limpiarse

Solución

  • Proporcionar una función pública gratuita para cada clase.
  • Cuando el objeto ya no sea necesario, llame de inmediato a la función gratuita para limpiar los
    Inserte la descripción de la imagen aquí
    problemas existentes.
  • libre es solo una función ordinaria, la llamada debe mostrarse
  • El objeto no se limpió antes de ser destruido, lo que puede causar fugas de recursos
  • ¿Puede el compilador de C ++ llamar automáticamente a una función especial para limpiar objetos?

2. La clase Destructor
C ++ puede definir una función de limpieza especial

  • Esta función especial de limpieza se llama destructor.
  • La función del destructor es opuesta al constructor.

Definición: ~ ClassName ()

  • Destructor no tiene parámetros ni declaración de tipo de valor de retorno
  • Se llama automáticamente al destructor cuando se destruye el objeto

Uso de destructor

#include <stdio.h>

class Test
{
    int mi;
public:
    Test(int i)
    {
        mi = i;
        printf("Test(): %d\n", mi);
    }
    ~Test()
    {
        printf("~Test(): %d\n", mi);
    }
};

int main()
{
    Test t(1);
    
    Test* pt = new Test(2);
    
    delete pt;
    
    return 0;
}

/*
从结果可以看出来,delete时候释放了pt,函数return的时候释放了t
Test(): 1
Test(): 2
~Test(): 2
~Test(): 1
*/

Criterios de definición de destructor

  • Cuando el destructor se personaliza en la clase y los recursos del sistema se utilizan en el constructor (como: aplicación de memoria, apertura de archivos, etc.), debe personalizar el destructor

Resumen El
destructor es una función especial que se limpia
cuando se destruye el objeto. Se llama automáticamente al destructor cuando se destruye el objeto. El destructor es
la garantía de que el objeto libera recursos del sistema.

Publicado 315 artículos originales · elogiado 937 · 650,000 visitas

Supongo que te gusta

Origin blog.csdn.net/super828/article/details/102575057
Recomendado
Clasificación