【发布时间】:2013-09-07 03:27:39
【问题描述】:
我试图了解当对象在堆栈上销毁时会发生什么。 这是我的示例代码:
#include <stdio.h>
struct B {
~B() {puts("BBBB");}
};
int main()
{
B b;
b.~B();
}
输出是
BBBB
BBBB
根据输出,我可以看出对象被销毁了两次。一个是 ~B(),另一个是在“}”之后。一个对象如何以及为什么会被破坏两次?
更新: 在我查看回复后,我认为析构函数不会破坏这个对象。它有一种方法可以在对象超出范围“}”之前将其销毁。 谢谢
【问题讨论】:
标签: c++