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(); }
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