Разпределена купчина обекти на C++ и членска променлива

class OtherClass
{
    ...
};

class Test
{
    OtherClass otherClass;
};

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

pTest сочи към обект от тип Test. otherClass също ли е разпределено в купчина или в стека?


person user1365914    schedule 24.11.2012    source източник


Отговори (2)


Test *pTest = new Test;

Създава Test обект на Freestore(Heap) и всички членове на Test също са на същото.
Така че Да.

Обърнете внимание, че технически стандартът никога не използва термините Heap или stack, но да, можете да ги приемете, защото почти всички реализации ги използват.

person Alok Save    schedule 24.11.2012
comment
Ами ако беше: OtherClass *pOtherClass = new OtherClass; - person user1365914; 24.11.2012
comment
@user1365914: След като използвате new, обектът ще бъде създаден във freestore и указателят ви ще сочи към него. - person Alok Save; 24.11.2012

Той е разпределен в купчината. Тъй като pDataMember е член на данните с тип OtherClass (не указател!), той е част от паметта, разпределена за обекта от клас Test, следователно ще бъде разположен където и да се намира обектът Test.

Може би не трябва да назовавате не-указател pDataMember? Това е объркващо.

person JohnB    schedule 24.11.2012