std::shared_ptr<X> 有拷贝构造函数吗?
Does std::shared_ptr<X> have a copy constructor?
我正在学习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_;
};
Why shared_ptr does not have a simple copy constructor?
标准说:
A non-template constructor for class X is a copy constructor if its first parameter is of type X&, const X&, volatile X& or const volatile X&, [...]
没有这样的简单复制构造函数。 std::shared_ptr
有一个完全有效的复制构造函数。它构建了一个 std::shared_ptr
对象,该对象与给定对象共享所有权(如果有效)。
我正在学习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_;
};
Why shared_ptr does not have a simple copy constructor?
标准说:
A non-template constructor for class X is a copy constructor if its first parameter is of type X&, const X&, volatile X& or const volatile X&, [...]
没有这样的简单复制构造函数。 std::shared_ptr
有一个完全有效的复制构造函数。它构建了一个 std::shared_ptr
对象,该对象与给定对象共享所有权(如果有效)。