[英]std::weak_ptr: lock or shared_ptr constructor?
似乎有兩種方法可以臨時獲取weak_ptr
指向的資源的所有權:
lock()
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.