我理解用'new'初始化的对象是从堆中分配的,但是它们的成员呢?例如,我有A类:
class A
{
private: int a; //here "a" should be on stack
};
然后我分别在下面的代码中定义了对象A
A a;
A *ap = new A();
现在第一个语句将a
放在堆栈上,ap
将在堆中,但a.a
和ap->a
怎么样?他们是否与他们的父对象?
答案 0 :(得分:1)
是的,根据定义,如果一个对象在堆上,那么它的成员也是如此,对于堆栈也是如此。
一个对象实际上只是一块内存,所以因为该对象包含成员,那就是成员的内存所在的位置。
答案 1 :(得分:0)
成员是对象的一部分,就像struct
一样。