是否破壞自動對象(在堆棧上創建的對象)保證執行不在之前他們超出範圍?自動對象破壞
澄清:
#include <iostream>
class A {
public:
A() {
std::cout << "1";
}
~A() {
std::cout << "3";
}
};
void test123() {
A a;
std::cout << "2";
}
要打印"2"
,a
不需要任何更多,所以理論上編譯器可以嘗試優化,並儘快銷燬a
因爲它不需要任何更多。
我可以依靠上述功能總是印刷123
?
我從這個問題中瞭解到你來自垃圾收集的背景。例如,在.NET中,這種行爲是沒有保證的; GC可以隨時在最後一次參考之後完成「a」,在這種情況下,它將是最後一行。但是,在C++中,如下所述,它是嚴格定義的。 –
你猜對了完全錯誤:) ---我只是用它來實現模塊的循環模式。 – bitmask
唉,值得一試:) –