我在學習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