我想了解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不是。 –
哦,对,我明白了。那么,在对象被定义之前,生命期不能开始......“获得存储”隐含在对象定义中。在此之前内存可能已经存在的事实并不重要。 –