Я учусь 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++ обычно принимает ссылку * constant * (следовательно, 'const'), поскольку он не должен изменять копируемую вещь. – filmor
@filmor: спасибо за комментарий. Эта копия увеличивает счетчик ссылок исходного экземпляра shared_ptr? – mora