나는 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