我想理解当一个对象在栈上销毁时会发生什么。 以下是我的示例代码:
#include <stdio.h>
struct B {
~B() {puts("BBBB");}
};
int main()
{
B b;
b.~B();
}
输出结果为
BBBB
BBBB
根据输出,我可以看出这个对象被销毁了两次。一个是在~B()函数中,另一个是在"}"之后。为什么一个对象会被销毁两次?如何发生的?
更新: 在查看回复后,我认为析构函数并没有销毁这个对象。有没有一种方法可以在对象超出作用域"{}"之前销毁它呢? 谢谢。