"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando chamar manualmente um destruidor é uma prática legítima?

Quando chamar manualmente um destruidor é uma prática legítima?

Publicado em 17/11/2024
Navegar:546

When is Manually Calling a Destructor a Legitimate Practice?

Quando chamar manualmente um destruidor é justificável?

A noção de que chamar manualmente um destruidor indica um design defeituoso é frequentemente afirmada. No entanto, isso levanta a questão: Existem exceções a esta regra? para invocar explicitamente o destruidor:

1. Desalocação de memória controlada:

Quando a alocação e desalocação de memória são gerenciadas independentemente da construção e destruição de objetos, as chamadas manuais do destruidor tornam-se cruciais. Nesses casos, a construção do objeto ocorre através da colocação de new em um buffer de memória existente, enquanto a destruição ocorre através de uma chamada explícita do destruidor.

char buffer[sizeof(MyClass)]; { MinhaClasse* p = new(buffer)MinhaClasse; p->fazer alguma coisa(); p->~MinhaClass(); }

2. Alocadores de memória específicos:

char buffer[sizeof(MyClass)];

{
     MyClass* p = new(buffer)MyClass;
     p->dosomething();
     p->~MyClass();
}
Tutorial mais recente Mais>

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