secuencia de inicialización de cplusplus

1. El orden de herencia;

#include<iostream>

using namespace std;

class  AAA
{
    public:
    AAA(){
        cout<<"AAA"<<endl;
    }
};

class BBB
{
    public:
    BBB(){
        cout<<"BBB"<<endl;
    }
};

class CCC: public BBB , AAA
{
    public:
    CCC(){
        cout<<"cccc"<<endl;
    }
};


int main()
{
    CCC c1;

    return 0 ;

}

Resultado de salida:

./a.out
BBB
AAA
cccc 

 

2. El orden de declaración:

#include<iostream>

using namespace std;

class  AAA
{
    public:
    AAA(){
        cout<<"AAA"<<endl;
    }
};

class BBB
{
    public:
    BBB(){
        cout<<"BBB"<<endl;
    }
};

class CCC
{
    public:
    CCC():a1(),b1(){
        cout<<"cccc"<<endl;
    }

    BBB b1;
    AAA a1;
    
};


int main()
{
    CCC c1;

    return 0 ;

}

Resultado de salida:

./a.out
BBB
AAA
cccc

3. El papel de la lista de inicialización:

  • Los miembros constantes, debido a que las constantes solo se pueden inicializar y no se pueden asignar, deben colocarse en la lista de inicialización.

  • Para los tipos de referencia, las referencias deben inicializarse cuando están definidas y no pueden reasignarse, por lo que también deben escribirse en la lista de inicialización.

  • No hay un constructor predeterminado para el tipo de clase, porque la lista de inicialización se puede inicializar sin llamar al "constructor predeterminado + operador de asignación de copia", sino directamente llamando al "constructor de copia".

 

 

referencia:

https://www.cnblogs.com/silenzio/p/11766609.html

Supongo que te gusta

Origin blog.csdn.net/zgb40302/article/details/115365828
Recomendado
Clasificación