簡體   English   中英

std :: weak_ptr:lock或shared_ptr構造函數?

[英]std::weak_ptr: lock or shared_ptr constructor?

似乎有兩種方法可以臨時獲取weak_ptr指向的資源的所有權:

  1. 使用lock()
  2. weak_ptr傳遞給shared_ptr構造函數

這兩個都產生一個shared_ptr ,在weak_ptr為空並且shared_ptr構造函數拋出異常的情況下,鎖返回nullptr

所以問題是:何時應該使用其中一種? 是否有與此相關的一般准則或最佳做法?

復制自http://en.cppreference.com/w/cpp/memory/weak_ptr/lock

此函數和std :: shared_ptr的構造函數都可用於獲取std :: weak_ptr引用的托管對象的臨時所有權。 不同之處在於std :: shared_ptr的構造函數在其std :: weak_ptr參數為空時拋出異常,而std :: weak_ptr :: lock()構造一個空的std :: shared_ptr。

這讓我相信你根據是否要拋出異常來選擇使用哪一個。 構造函數可以在必須工作時使用,而lock可以在它可能無法工作時使用,您可以檢查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM