C 11에서 고유 포인터가 있는 클래스 복사
독점 소유권을 적용하는 스마트 포인터인 Unique_ptr이 포함된 클래스에 대한 복사 생성자 만들기 , 독특한 도전 과제를 제시합니다. C 11에서 Unique_ptr 멤버를 관리하려면 신중한 고려가 필요합니다.
해결책:
복사 생성자를 구현하려면 다음 두 가지 옵션이 있습니다.
class A { std::unique_ptr<int> up_; public: A(int i) : up_(new int(i)) {} A(const A& a) : up_(new int(*a.up_)) {} };
std::shared_ptr<int> sp = std::make_shared<int>(*up_);
추가 고려 사항:
A(A&& a) : up_(std::move(a.up_)) {}
A& operator=(const A& a) { up_.reset(new int(*a.up_)); return *this; } A& operator=(A&& a) { up_ = std::move(a.up_); return *this; }
위 내용은 `unique_ptr` 멤버를 포함하는 C 11 클래스를 올바르게 복사하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!