Geração automática de operações de movimentação
Em C 11, a introdução da semântica de movimentação levantou questões sobre as circunstâncias sob as quais move construtores e move atribuição operadores são gerados automaticamente.
Em C 11, as operações de movimentação não são geradas automaticamente como construtores de cópia e operadores de atribuição de cópia. O compilador só gera semântica de movimentação se certas condições forem atendidas:
A compreensão dessas regras ajuda a orientar a implementação de classes que utilizam a semântica de movimentação. A tabela da apresentação de Howard Hinnant fornece uma visão geral concisa da geração automática de membros especiais, incluindo operações de movimentação:
Declaração | Copy Constructor | Operador de atribuição de cópia | Move Construtor e Move Assignment Operador |
---|---|---|---|
Nenhum | Gerado | Gerado | Não gerado |
Construtor de cópia | Não gerado | Gerado | Não Gerado |
Operador de atribuição de cópia | Não gerado | Não gerado | Não gerado |
Move Construtor | Não gerado | Não gerado | Não Gerado |
Move Operador de Atribuição | Não Gerado | Não Gerado | Não Gerado |
Destruidor | Não gerado | Não gerado | Não Gerado |
Construtor de cópia e operador de atribuição de cópia | Não gerado | Não gerado | Não gerado |
Construtor de cópia e construtor de movimento | Não gerado | Não Gerado | Não gerado |
Construtor de cópia e operador de atribuição de movimentação | Não gerado | Não gerado | Não Gerado |
Copiar operador de atribuição e construtor de movimentação | Não Gerado | Não gerado | Não gerado |
Copiar operador de atribuição e mover operador de atribuição | Não gerado | Não gerado | Não gerado |
Move Construtor & Destruidor | Não gerado | Não gerado | Não gerado |
Move operador de atribuição e destruidor | Não gerado | Não gerado | Não Gerado |
Construtor de cópia e operador de atribuição de cópia e construtor de movimento | Não gerado | Não gerado | Não gerado |
Construtor de cópia e operador de atribuição de cópia e operador de atribuição de movimento | Não Gerado | Não gerado | Não gerado |
Copiar construtor e mover construtor e mover operador de atribuição | Não gerado | Não gerado | Gerado |
Copiar operador de atribuição e mover Construtor e operador de atribuição de movimentação | Não gerado | Não gerado | Gerado |
Ao reconhecer essas regras, os desenvolvedores podem garantir que suas classes utilizem adequadamente a semântica de movimentação e alcancem a eficiência ideal.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3