2 kieranyu kieranyu 于 2014.08.18 16:15 提问

关于类的成员变量指向在堆上的对象的选择:指针/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
oyljerry   Ds   Rxr 2015.01.18 00:08

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!