kieran 2014-08-18 08:15 采纳率: 0%
浏览 2323

关于类的成员变量指向在堆上的对象的选择:指针/auto_ptr<>/shared_ptr<> ?

在堆上的对象作为一个类的一个成员变量,我了解到的至少有三种方式(如下所示):

class A
{

}

class B
{
A* m_pA1;
auto_ptr m_pA2;
shared_ptr
m_pA3;

}

B::B()
:m_pA1(new A),m_pA2(auto_ptr(new A)),m_pA3(shared_ptr(new A))
{

}

针对这三种方案,在什么情况下选择哪种呢:下面是小弟的一些感悟,算是抛砖引玉
1、个人感觉和B的拷贝构造和赋值有关系,如果需要的是B的一个深拷贝,我会选择m_pA1;
2、auto_ptr的所有权剥夺性,使得他不适合拷贝构造和赋值;
3、shared_ptr
采用引用计数 觉得和m_pA1之间做选择还是有点纠结?
4、圆方,你怎么看?

  • 写回答

1条回答

  • oyljerry 2015-01-17 16:08
    关注

    一般使用就一
    二淘汰了
    三引用计数也狠多用,如果熟悉也可以

    评论

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题