我正在学习std::shared_ptr
我阅读了一篇关于shared_ptr
的构造函数的文档,以找到它的复制构造函数。
我可以找到一个构造函数,
shared_ptr( const shared_ptr& r );
但似乎它不是我期望的简单复制构造函数,
shared_ptr( shared_ptr& r );
似乎它没有共享参考计数器。
为什么shared_ptr
没有简单的复制构造函数?
如果我在下面写下我真正想做的事,
class A {
public:
A(shared_ptr<X>& sptr) : sptr_(sptr) {}
private:
shared_ptr<X> sptr_;
};
答案 0 :(得分:4)
为什么shared_ptr没有简单的复制构造函数?
标准说:
X类的非模板构造函数是一个复制构造函数,如果它的第一个参数是X&amp;类型,const X&amp;,volatile X&amp;或const volatile X&amp;,[...]
没有这样的简单复制构造函数。 std::shared_ptr
具有完全有效的复制构造函数。它构造了一个std::shared_ptr
对象,该对象与给定的对象共享所有权(如果有效)。