我在我的代码中使用了额外的括号。我认为在局部变量范围结束后应该调用析构函数,但它不像这样工作:
class TestClass {
public:
TestClass() {
printf( "TestClass()\n" );
}
~TestClass() {
printf( "~TestClass()\n" );
}
};
int main() {
int a, b, c;
{
TestClass *test = new TestClass();
}
}
它输出:
测试类()
所以它没有调用 TestClass 的析构函数,但为什么呢?如果我手动调用它(删除测试),它会调用析构函数,对。但是为什么它在第一种情况下不调用析构函数呢?