2
class OtherClass
{
    ...
};

class Test
{
    OtherClass otherClass;
};

int main()
{
    Test *pTest = new Test;
}

pTest指向类型的对象Test。是otherClass在堆上还是在栈上分配?

4

2 回答 2

4
Test *pTest = new Test;

在 Freestore(Heap) 上创建一个Test对象,所有的成员Test也都在同一个上面。
所以是的。

请注意,从技术上讲,该标准从不使用术语堆或堆栈,但是您可以假设它们,因为几乎所有实现都使用它们。

于 2012-11-24T13:09:45.593 回答
1

它在堆上分配。由于pDataMember是具有类型的数据成员OtherClass(不是指针!),它是为 class 的对象分配的内存的一部分Test,因此它将位于Test对象所在的任何位置。

也许您不应该命名非指针pDataMember?这很令人困惑。

于 2012-11-24T13:10:32.617 回答