고유 포인터(unique_ptr)는 C 11의 고유 소유권 원칙을 따릅니다. 함수 또는 생성자 인수로 고유한 포인터를 사용하면 여러 옵션이 고유하게 발생합니다.
Base(std::unique_ptr<Base> n) : next(std::move(n)) {}
이 방법은 고유 포인터의 소유권을 함수/객체로 이전합니다. 포인터의 내용은 함수로 이동하고 작업 후 원래 포인터는 비워 둡니다.
Base(std::unique_ptr<Base> &n) : next(std::move(n)) {}
허용 고유 포인터에 액세스하고 잠재적으로 소유권을 주장하는 함수입니다. 그러나 이 동작은 보장되지 않으며 포인터 처리를 결정하려면 함수 구현을 검사해야 합니다.
Base(std::unique_ptr<Base> const &n);
함수가 고유 포인터의 소유권을 주장하는 것을 방지합니다. 포인터에 액세스할 수는 있지만 저장하거나 수정할 수는 없습니다.
Base(std::unique_ptr<Base> &&n) : next(std::move(n)) {}
비 const L-값 참조 전달과 비교 가능 하지만 임시 인수가 아닌 인수를 전달할 때는 std::move를 사용해야 합니다. 함수가 소유권을 주장할 수도 있고 주장하지 않을 수도 있어 예측하기가 어렵습니다.
고유 포인터를 이동하려면 std::move를 사용하세요. 고유 포인터 복사는 허용되지 않습니다:
std::unique_ptr<Base> newPtr(std::move(oldPtr));
위 내용은 C에서 고유 포인터를 함수 또는 생성자 인수로 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!