C ++: por que não chama um destruidor?
Eu uso colchetes extras no meu código. Eu pensei quando o destruidor deveria ser chamado depois que o escopo da variável local fosse finalizado, mas não funciona assim:
class TestClass {
public:
TestClass() {
printf( "TestClass()\n" );
}
~TestClass() {
printf( "~TestClass()\n" );
}
};
int main() {
int a, b, c;
{
TestClass *test = new TestClass();
}
}
Ele produz:
TestClass ()
Por isso não chama o destruidor do TestClass, mas por quê? Se eu chamá-lo manualmente (delete test) ele chama o destruidor, certo. Mas por que não chama o destruidor no primeiro caso?