《Effective Mocern C++》:Item 18: Use std::unique_ptr for exclusive-ownership resource management

                                                 孤獨,是憂愁的伴侶,也是精神活動的密友。——(黎)紀伯倫


智能指針就是一種代理模式,代理裸指針,幫助用戶管理堆內存。


-----unique_ptr的速度很快 ,佔用資源少::

----- unique_ptr獨佔其指向的資源,當一個unique_ptr被銷燬時,如果其不是null的話就會對其包裹的指針(堆內存)

進行delete操作::


 

-----講到一個典型的應用場景,即 工廠函數返回一個unique_ptr<T>, 返回的這個unique_ptr可以被傳給

container,container又可以被傳給另一個對象的成員,一般情況下都能保證資源在最後能被釋放:

 

-------- 默認情況下,unique_ptr使用delete來最後銷燬其包裹的指針指向的資源,但是,可以給自定義

一個銷燬函數,這個自定義的銷燬函數可以是lambda函數,傳統函數等等 (使用lambda函數效率更高),

自定義的銷燬函數必須作爲std::unique_ptr的second type入參::

-------- 對上面的代碼進行詳細解釋:

 

-------- 使用c++14的話,由於其function return type deduction特性,上面的代碼可以更加簡潔::

-------- 定製銷燬函數的時候,可以使用不同類型的函數,例如,labmda 函數,函數指針等,各種的比較::

 

----std::unique_ptr除了用在工廠函數的返回類型這個場景外,另一個典型的應用是Pimpl Idiomhttps://blog.csdn.net/qq_35865125/article/details/103837518

 

----std::unique_ptr可以用來託管單個對象的指針,也可以託管一個數組,但是,一般情況下,由於std::array, std::vector

存在,一般不需要託管一個數組,,另外,不管讓其託管的是啥,其是智能識別託管類型的:

 

----std::unique_ptr可以被方便地轉換爲shared_ptr,這也是其非常非常適合用於工廠函數的返回值

的重要原因:::!!  --        看來我需要該之前寫過的工廠函數了

 

---std::unique_ptr總結:

 

 

 

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章