孤獨,是憂愁的伴侶,也是精神活動的密友。——(黎)紀伯倫
智能指針就是一種代理模式,代理裸指針,幫助用戶管理堆內存。
-----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 Idiom,https://blog.csdn.net/qq_35865125/article/details/103837518
----std::unique_ptr可以用來託管單個對象的指針,也可以託管一個數組,但是,一般情況下,由於std::array, std::vector
存在,一般不需要託管一個數組,,另外,不管讓其託管的是啥,其是智能識別託管類型的:
----std::unique_ptr可以被方便地轉換爲shared_ptr,這也是其非常非常適合用於工廠函數的返回值
的重要原因:::!! -- 看來我需要該之前寫過的工廠函數了
---std::unique_ptr總結: