Construtor C ++ e lista de inicialização

Eu não sou o criador de notas, sou apenas um carregador de notas ~

1. O construtor pode estar sobrecarregado ou pode ser uma     string de
    construtor sem parâmetros
s que
    corresponde a string com parâmetros padrão           ; uma
    string de construtor de parâmetro (const char *) s ("hello") que corresponde a string      

2, o construtor padrão (sem construtor de parâmetros)
   1) Se nenhum construtor for definido na classe, o compilador fornecerá um construtor padrão (sem parâmetro) para a classe:
        - "Não o faça para variáveis ​​de membro do tipo básico Inicialização
        "Para variáveis ​​de membro do tipo de classe (subobjetos de membro), ele automaticamente chamará o construtor sem parâmetros da classe correspondente para inicializar

   2) Se você mesmo definir um construtor, independentemente de haver parâmetros, o compilador não fornecerá mais o construtor sem parâmetros padrão.

3, construtor de conversão de tipo (construtor de parâmetro único) // conversão de tipo do
    nome da classe de classe do construtor    {
        // Pode converter variáveis ​​de tipo de origem em objetos do tipo de classe atual.Nome da
        classe (tipo de fonte) {...}
    };
    -----------------------------------
    nome da classe {
        // Adicionar modificação "explícita" da palavra-chave, você pode Obrigatório que esta
        conversão de tipo // deva ser feita
        explicitamente Nome explícito da classe (tipo de origem) {...}
    };

4. O construtor de cópia (construtor de cópia)  Acho que essa parte é bastante difícil de entender: 
1) Use um objeto existente como parâmetro de construção de objetos semelhantes.Quando criar um novo objeto de cópia, o construtor de cópia será chamado.
    classe nome da classe {nome da
        classe (nome da classe const &) {// estrutura da cópia
            ...
        }
    };
    ------------
    por exemplo:
    classe A {...};
    A a1 (.. .);
    A a2 (a1); // Construtor de cópias de correspondência de A


2) Se uma classe não definir seu próprio construtor de cópias, o compilador fornecerá um construtor de cópias padrão para a classe:
-> Para variáveis ​​de membro do tipo básico, copie por byte
- >> Para membros do tipo de classe Variável (subobjeto de membro) chamará automaticamente o construtor de cópia da classe correspondente para inicializar

 

Nota: Geralmente, não é necessário definir a função do construtor de cópia sozinho, porque o compilador a fornece por padrão já é muito fácil de usar.

    classe A1 {}; // Nenhum parâmetro por padrão, cópia padrão
    classe A2 {// cópia padrão
        A (nula) {}
    };
    classe A3 {// cópia padrão
        A (int) {}
    };
    classe A4 { // Não há estrutura padrão
        A (const A &) {}
    };

3) O tempo da chamada do construtor de cópia -
"Use um objeto existente como o parâmetro de construção do mesmo tipo de objeto -
" Passe os parâmetros para a função na forma de objeto -
"Retorne o objeto da função (pode ser otimizado pelo compilador)

Publicado 9 artigos originais · Curtidas6 · Visitas 1995

Acho que você gosta

Origin blog.csdn.net/GG802312/article/details/105593406
Recomendado
Clasificación