unique_ptr 멤버가 있는 클래스에 대한 복사 생성자 구현
unique_ptr 멤버 변수를 활용하는 클래스로 작업할 때 복사 생성자를 구현하는 것이 중요합니다. 이 기사에서는 이러한 클래스에 대해 C 11에서 복사 생성자를 생성하는 기술을 살펴보겠습니다.
unique_ptr은 공유할 수 없으므로 해당 내용을 깊게 복사하거나 shared_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_)) {} };
이 접근 방식에서는 새로운 고유_ptr이 할당되고 원래 포인터 내용의 복사본이 할당됩니다.
또는 이동 생성자를 대신 활용할 수 있습니다. 복사 생성자:
A(A&& a) : up_(std::move(a.up_)) {}
그러나 이 방법은 소유권을 이전하므로 다른 의미를 도입합니다. 소스에서 대상 객체로의 고유_ptr.
완전성을 위해 전체 할당 연산자 집합은 다음과 같습니다.
A& operator=(const A&a) { up_.reset(new int(*a.up_)); return *this; } A& operator=(A&& a) { up_ = std::move(a.up_); return *this; }
복사 생성자를 사용할지 이동 생성자를 사용할지 결정하는 것은 상황에 따라 다릅니다. 클래스를 std::Vector에서 사용하려는 경우 클래스를 이동 전용으로 만들 것인지 복사 가능하게 만들 것인지 선택하는 것은 벡터가 객체의 유일한 소유자여야 하는지 여부에 따라 영향을 받습니다.
위 내용은 C 11에서 `unique_ptr` 멤버가 있는 클래스에 대한 복사 생성자를 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!