class OtherClass
{
...
};
class Test
{
OtherClass otherClass;
};
int main()
{
Test *pTest = new Test;
}
pTest
указывает на объект типа Test
. Выделяется ли otherClass
в куче или в стеке?
class OtherClass
{
...
};
class Test
{
OtherClass otherClass;
};
int main()
{
Test *pTest = new Test;
}
pTest
указывает на объект типа Test
. Выделяется ли otherClass
в куче или в стеке?
Test *pTest = new Test;
Создает объект Test
в Freestore(Heap), и все члены Test
также находятся в одном и том же.
Итак, да.
Обратите внимание, что технически стандарт никогда не использует термины «куча» или «стек», но да, вы можете предположить их, потому что они используются почти во всех реализациях.
new
, объект будет создан в свободном магазине, и ваш указатель будет указывать на него.
- person Alok Save; 24.11.2012
Он выделен в куче. Поскольку pDataMember
является элементом данных с типом OtherClass
(не указателем!), он является частью памяти, выделенной для объекта класса Test
, поэтому он будет расположен там, где находится объект Test
.
Может быть, не стоит называть неуказатель pDataMember
? Это сбивает с толку.