我想了解POD類型以及它們如何在堆棧中分配和初始化。 鑑於用戶定義的類對象的堆棧分配
class A {
public:
A();
int x;
};
class B {
public:
int x;
};
int func()
{
A a;
B b;
}
我是在說B分配之後,但之前的初始化正確?我的意思是 的空間分配爲A和B的順序,他們已宣告但在空間分配,當它被宣佈爲初始化b的初始化 ?
我讀到莢一個很好的常見問題,在這裏彙總 What are Aggregates and PODs and how/why are they special?
之一,他說的話是: 當構造完成非POD類類型的對象的生命週期開始和結束時,析構函數已完成。對於POD類,當對象的存儲被佔用時,生命週期開始,並在釋放或重用存儲時結束。
所以我想了解POD如何分配和初始化的細節以及 與非POD不同的細節。
其實這沒有鏈接,因爲你沒有一個定義爲'A :: A()',如果你做了,'A'不會POD因爲它有一個用戶提供的默認構造函數。 –
是的,它的僞代碼。 B是一個吊艙,A不是。 –
哦,對,我明白了。那麼,在對象被定義之前,生命期不能開始......「獲得存儲」隱含在對象定義中。在此之前內存可能已經存在的事實並不重要。 –