会在 before , afterfoo
被破坏,还是没有任何保证?bar
bar
myFunction()
{
Foo foo = Foo();
Bar bar = Bar();
return;
}
会在 before , afterfoo
被破坏,还是没有任何保证?bar
bar
myFunction()
{
Foo foo = Foo();
Bar bar = Bar();
return;
}
它们按照声明的相反顺序被销毁。在
{
Foo foo = Foo();
Bar bar = Bar();
}
foo
先构造,再构造bar
。超出范围时-bar
首先破坏,然后foo
.
函数的内存称为“堆栈”。和其他所有堆栈一样,你放的最后一件事是你要起飞的第一件事。
因此,实际上,当函数返回并且本地内存超出范围时,所有本地变量都会以相反的顺序被破坏。
情况总是如此,你绝对可以依赖它(在同一个线程中)。
在继承中,它是相反的顺序。在您的情况下,它的创建顺序相同。
Foo f= new Foo();
Bar b= new Bar();
f 在 b 之前被销毁