[Resumen de aprendizaje de análisis en profundidad de C ++] 27 Modo de construcción de segundo orden

[Resumen de aprendizaje de análisis en profundidad de C ++] 27 Modo de construcción de segundo orden

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


1. Revisión
de Constructor Acerca de Constructor

  • El constructor de clases se utiliza para la inicialización de objetos.
  • El constructor tiene el mismo nombre que la clase y no tiene valor de retorno.
  • Se llama automáticamente al constructor cuando se define el objeto

2. El problema

  • 1. ¿Cómo juzgar el resultado de ejecución del constructor? De ninguna manera
  • 2. ¿Qué sucede cuando la declaración de retorno se ejecuta en el constructor? El constructor vuelve inmediatamente
  • 3. ¿La finalización de la función constructora significa que el objeto se construye con éxito? No significa construcción exitosa

Constructor de excepción

#include <stdio.h>

class Test
{
    int mi;
    int mj;
    bool mStatus;
public:
    Test(int i, int j) : mStatus(false)
    {
        mi = i;
        
        return;
        
        mj = j;
        
        mStatus = true;
    }
    int getI()
    {
        return mi;
    }
    int getJ()
    {
        return mj;
    }
    int status()
    {
        return mStatus;
    }
};


int main()
{  
    Test t1(1, 2);
    
    if( t1.status() )  //利用手动的添加返回值控制
    {
        printf("t1.mi = %d\n", t1.getI());
        printf("t1.mj = %d\n", t1.getJ());
    
    }
    
    return 0;
}

3. Constructor

  • Solo brinde oportunidades para inicializar automáticamente las variables miembro
  • No hay garantía de que la lógica de inicialización tenga éxito
  • El constructor termina inmediatamente después de ejecutar la declaración de devolución

4. El significado de la verdad ¡El
constructor puede determinar solo el estado inicial del objeto, no el nacimiento del objeto! !

5.
El concepto de objetos semiacabados.

  • Objetos que no se pueden completar como se esperaba
  • Los objetos semiacabados son objetos legales de C ++ y una fuente importante de errores
  • Errores difíciles de ajustar: punteros salvajes, objetos semiacabados
  • Los peligros de los objetos semiacabados IntArray

6. Construcción de segundo orden: el núcleo de la solución que se convierte en un objeto de producto
: divide el proceso de construcción en dos

Nivel de principio:
el proceso de construcción en el desarrollo de ingeniería se puede dividir en

  • Operación de inicialización independiente de recursos
    • Operaciones imposibles
  • Operaciones que requieren recursos del sistema
    • Pueden ocurrir situaciones anormales, como: aplicación de memoria, acceso a archivos
      Inserte la descripción de la imagen aquí

Nivel de código:
ejemplo de construcción de segundo orden uno
Inserte la descripción de la imagen aquí

Ejemplo de construcción de segundo orden 2
Inserte la descripción de la imagen aquí

Resumen El
constructor solo puede determinar el estado de inicialización del objeto.
La falla de la operación de inicialización en el constructor no afecta el nacimiento del objeto. Los
objetos semiterminados incompletos son una fuente importante de errores. La
construcción de segundo orden divide artificialmente el proceso de inicialización en dos partes. La
construcción de segundo orden puede asegurar Todos los objetos creados están completamente inicializados.

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

Supongo que te gusta

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