我有具有这些对象的寿命都应该由A的寿命智能指针与值作为成员变量
我考虑被限制的类型M和N的成员变量A类
class A {
M member1;
N member2;
}
与
class A {
std::unique_ptr<M> member1;
std::unique_ptr<N> member2;
}
我不能完全肯定这是更好的,因为他们都做到我想要的东西。成员的生命周期绑定到对象上,我不需要手动管理内存。每个设置有哪些优缺点?
如果没有理由有指针为什么有指针?所有成员在析构函数中被“销毁”。 – NathanOliver
你*想要创建'M'和'N'作为指针的唯一时间就是它们非常大的地方,并且在堆栈上创建它们可能会导致你用尽堆栈空间 –
只有使用动态分配有一个理由,并有一个很好的理由。例如,如果你的成员对象是巨大的并且可能粉碎堆栈。否则,不要毫无意义地引入动态分配/间接的开销。 –