Работа с памятью
От: R1K0 Россия  
Дата: 18.06.15 11:55
Оценка:
Всем привет. Вот есть у меня некий набор классов:
typedef boost::shared_ptr<class A> APtr;
class A
{
    int a;
};

typedef boost::shared_ptr<class B> BPtr;
class B
{
    int b;
    APtr a;
};

typedef boost::shared_ptr<class C> CPtr;
class C
{
    int c;
    A a;
};


Вопросы в следующем:
1. Если я создам объект класса APtr, то он создается в куче и, по идее, его атрибут — а — тоже должен быть в куче — правильно?
2. Если я создам объект класса BPtr, то он также создается в куче, но у него есть атрибут — b — который отдельно создается в куче — и они все в куче — правильно ?
3. Ну и создаю я объект класса CPtr — он так же в куче, но он содержит объект класса А, который вроде как стековый — или он все равно в куче как часть объекта CPtr?
4. Ну и исходя из вопросов 2 и 3 — какая практика лучше — создавать объекты клаcс BPtr или CPtr, или, скорее, в каком случае какая практика лучше?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.