Просто вопрос дизайна / оптимизации. Когда вы храните указатели или объекты и почему? Например, я полагаю, что оба этих работы (ошибки компиляции запрета):
class A{
std::unique_ptr
Я считаю, что одна разница приходит при создании на стеке или кучу?
, например:
int main(){
std::unique_ptr a_ptr;
std::unique_ptr b_ptr;
a_ptr = new A(); //(*object_ptr) on heap, (*a_ptr) on heap?
b_ptr = new B(); //(*object_ptr) on heap, object on heap?
A a; //a on stack, (*object_ptr) on heap?
B b; //b on stack, object on stack?
}
также, SIZEOF (A)
должен быть SIZEOF (B) ?
Есть ли другие проблемы, которые мне не хватает?
(Даниэль напомнил мне о проблеме наследования в своем родном посте в комментариях)
, поэтому, поскольку распределение стека быстрее, чем распределение кучи в целом, но размер меньших для A, не может быть, это один из этих компромиссов, которые не могут быть Ответил без тестирования производительности в том случае, рассматриваемая даже при перемещении семантики? Или некоторые правила больших пальцев, когда оно более выгодно использовать один над другим? (Сан-Джасинто скорректировал меня о распределении стека / кучи - быстрее, а не стек / куча)
Я догадаю, что больше копирования построения приведет к той же проблеме производительности, (3 экземпляра ~ 3x аналогичные характеристики, как инициирование первого ). Но перемещение построения может быть более выгодно использовать стопку как можно больше ???
Вот связанный вопрос, но не совсем одинаково. C ++ STL: Должен ли я хранить целые объекты или указатели на объекты?
Спасибо!