私はstd::shared_ptr
を学んでいます。
shared_ptr
のコンストラクタに関するドキュメントを読んで、そのコピーコンストラクタを見つけました。std :: shared_ptr <X>にコピーコンストラクタがありますか?
私は、コンストラクタを見つける
shared_ptr(const shared_ptr& r);
が、それは、私が期待される、単純なコピーコンストラクタではありません
shared_ptr(shared_ptr& r);
と、それは株式がカウンターを参照していないようだと思われる可能性があります。
なぜshared_ptr
に単純なコピーコンストラクタがないのですか?場合
shared_ptrのは、単純なコピーコンストラクタを持っていないのはなぜ、私が
class A {
public:
A(shared_ptr<X>& sptr) : sptr_(sptr) {}
private:
shared_ptr<X> sptr_;
};
コピーコンストラクタは通常、(渡されたオブジェクトを変更するべきではないため) 'const'部分を持っていますが、必要ではありません。 –
あなたは間違ったことを期待しています。 C++のコピーコンストラクタは、コピーされるものを変更することは想定されていないので、通常、* constant *(したがって 'const')参照を受け取ります。 – filmor
@filmor:コメントありがとうございました。このコピーは元のshared_ptrインスタンスの参照カウンタをインクリメントしますか? – mora