共用方式為


unique_ptr::release

將傳回已儲存指標的擁有權釋放給呼叫者,並將已儲存的指標值設為 nullptr。

pointer release();

屬性值/傳回值

傳回已儲存的指標。

備註

使用 release 接管 unique_ptr 所儲存的原始指標之擁有權。 呼叫端會負責刪除傳回的指標。 unique-ptr 已設為空白的預設建構狀態。 呼叫 release 之後,您可以將相容類型的另一個指標指派至 unique_ptr。

範例

此範例顯示釋放呼叫者為何需負責傳回的物件:

// stl_release_unique.cpp
// Compile by using: cl /W4 /EHsc stl_release_unique.cpp
#include <iostream>
#include <memory>

struct Sample {
   int content_;
   Sample(int content) : content_(content) {
      std::cout << "Constructing Sample(" << content_ << ")" << std::endl;
   }
   ~Sample() {
      std::cout << "Deleting Sample(" << content_ << ")" << std::endl;
   }
};

void ReleaseUniquePointer() {
   // Use make_unique function when possible.  
   auto up1 = std::make_unique<Sample>(3);
   auto up2 = std::make_unique<Sample>(42);
   
   // Take over ownership from the unique_ptr up2 by using release
   auto ptr = up2.release();
   if (up2) {
      // This statement does not execute, because up2 is empty.
      std::cout << "up2 is not empty." << std::endl;
   }
   // We are now responsible for deletion of ptr.
   delete ptr;
   // up1 deletes its stored pointer when it goes out of scope.   
}

int main() {
   ReleaseUniquePointer();
}

電腦輸出:

  

需求

標頭: <memory>

命名空間: std

請參閱

工作

如何:建立和使用 unique_ptr 執行個體

參考

unique_ptr 類別

<memory>

其他資源

unique_ptr 成員

<memory> 成員