INNENTÜREN, TUNING DESIGN TÜREN aus Slowenien.


  • Ljubljana


    0038651 - 660 - 406

  • Ptuj


    0038651 - 316 - 130
    0038631 - 688 - 777

unique_ptr 예제

unique_ptr 예제

unique_ptr 개체를 복사할 수는 없지만 이동할 수 있습니다. 고유_ptr 개체는 연결된 원시 포인터의 소유자 ship을 다른 unique_ptr 개체로 전송할 수 있습니다. 예를 들어, 위의 예제에서 보여 준 것처럼 고유 포인터 자체가 아니라 함수에 대한 참조로 고유 포인터의 내용을 전달해야한다고 들었습니다. 이렇게하면 함수가 고유 포인터 (역참조)와 개체에 대한 표준 참조로 작동합니까? 어느 것을 선호해야합니까? 이름은 “ptr”입니다. 하지만 @ptr 형식 분수의 개체가 아니라 @std::unique_ptr. 고유_ptr에는 스칼라(즉, 비배열)와 배열용(const std::unique_ptr 및 ref)의 두 종류가 있습니다.{…} std::shared_ptr과 달리 std::unique_ptr은 NullablePointer를 조정하는 사용자 지정 핸들 형식을 통해 개체를 관리할 수 있습니다. 예를 들어, typedef boost::offset_ptr 포인터를 정의하는 삭제장치를 제공하여 공유 메모리에 있는 개체를 관리할 수 있습니다. 또는 다른 멋진 포인터. C++11은 헤더에 unique_ptr 템플릿을 도입했습니다.

메모리를 관리하는 편리한 방법(그리고 일반적으로 임의의 개체의 수명)을 제공합니다. 그것은 사용 하 여 조금 이상한, 그래서이 문서는 그것의 의미에 대 한 매우 기본적인 소개를 제공 합니다. 참조 : https://www.quora.com/When-should-I-use-shared_ptr-and-unique_ptr-in-C++-and-what-are-they-good-for 이 견적의 마지막 부분을 이해하지 못합니다. std::unique_ptr을 참조로 전달한 다음 호출자에게 관리 중인 개체를 변경하게 하는 예는 무엇입니까? 루프의 범위에서 unique_ptr이 참조로 전달된다는 것을 알 수 있습니다. 여기서 값으로 전달하려고 하면 고유_ptr 복사 생성자가 삭제되므로 컴파일러에 오류가 발생합니다. 첫째, @ptr1 C 스타일 포인터가 아니므로 @std::unique_ptr을 생성할 수 없습니다. 둘째, @std::unique_ptr에 @std::unique_ptr을 허용하는 생성자가 있다면 동일한 리소스를 관리하는 두 개의 @std::unique_ptrs로 끝날 것입니다. 2. @std::벡터를 만들고 수명이 끝날 때까지(예: 범위 끝)에 도달하면 @std::벡터는 할당된 모든 메모리를 해제합니다.

동적으로 @std::벡터 포인터를 만드는 경우 수동으로 삭제해야 합니다. @std::벡터는 할당된 메모리를 삭제합니다. @std::벡터를 만들고 이를 사용하여 포인터를 동적으로 할당된 메모리에 저장하는 경우 해당 메모리를 수동으로 삭제해야 합니다. 이것이 질문에 대답하지 않으면 어떤 일이 일어나는지 확실하지 않은 예를 들어 보십시오. 한 번에 하나의 소유자만 있을 수 있습니다. 예를 들어, unique_ptr을 사용하는 시기는 언제입니까? 리소스의 단일 소유권(배타적)을 원할 때 unique_ptr을 사용합니다. 하나의 고유_ptr만 하나의 리소스를 가리킬 수 있습니다. 단일 리소스에 대해 하나의 unique_ptr이 있을 수 있기 때문에 하나의 unique_ptr을 다른 리소스에 복사할 수 없습니다.

T가 일부 기본 B의 파생 클래스인 경우 std::unique_ptr 는 암시적으로 std::unique_ptr로 변환할 수 있습니다.