我在学习std::shared_ptr
。
我读了一篇关于构造函数shared_ptr
的文档来找到它的拷贝构造函数。std :: shared_ptr <X>有复制构造函数吗?
我能找到一个构造函数,
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_;
};
复制构造函数*通常*具有'const'部分(因为它不应该修改传递的对象),但不需要它。 –
你正在期待错误的事情。 C++中的拷贝构造函数通常需要一个*常量*(因此是'const')引用,因为它不应该修改被拷贝的东西。 – filmor
@filmor:谢谢你的评论。此副本是否增加原始shared_ptr实例的引用计数器? – mora