У меня есть класс А, который имеет переменные-члены типов M и N. времена жизни этих объектов, как предполагается, должны быть ограничены временем жизни А.Интеллектуальные указатели против значения в качестве переменных членов
Я рассматриваю
class A {
M member1;
N member2;
}
против
class A {
std::unique_ptr<M> member1;
std::unique_ptr<N> member2;
}
Я не совсем уверен, что лучше, так как оба они сделать то, что я хочу. Время жизни членов привязано к объекту, и мне не нужно вручную управлять памятью. Каковы преимущества и недостатки каждой установки?
Если нет причин указывать указатель, у кого есть указатель? Все участники «уничтожены» в деструкторе. – NathanOliver
Единственный раз, когда вы * могли бы хотеть создавать «M» и «N» в качестве указателей, было бы там, где они очень большие, а их создание в стеке может привести к выходу из пространства стека. –
Используйте только динамическое распределение, если вы есть причина и веская причина. Например, если ваши объекты-члены являются гигантскими и могут разбивать стек. В противном случае не бессмысленно вводить накладные расходы на динамическое распределение/косвенность. –