class OtherClass
{
...
};
class Test
{
OtherClass otherClass;
};
int main()
{
Test *pTest = new Test;
}
pTest
指向Test
类型的对象。是否在堆上分配了otherClass
还是在堆栈中?
答案 0 :(得分:4)
Test *pTest = new Test;
在Freestore(堆)上创建一个Test
对象,Test
的所有成员也在同一个。
是的。
请注意,从技术上讲,标准从不使用术语堆或堆栈,但是您可以假设这些,因为几乎所有实现都使用它们。
答案 1 :(得分:1)
它在堆上分配。由于pDataMember
是类型为OtherClass
的数据成员(不是指针!),因此它是为类Test
的对象分配的内存的一部分,因此它将位于Test
的任何位置。 {1}}找到了对象。
也许你不应该命名非指针pDataMember
?这令人困惑。