目錄
?1. 智能指針的使用場景分析
2. RAII和智能指針的設計思路
?3. C++標準庫智能指針的使用
?4.2 weak_ptr
?1. 智能指針的使用場景分析
?下?程序中我們可以看到,new了以后,我們也delete了,但是因為拋異常導,后?的delete沒有得到執?,所以就內存泄漏了,所以我們需要new以后捕獲異常,捕獲到異常后delete內存,再把異常拋出,但是因為new本?也可能拋異常,連續的兩個new和下?的Divide都可能會拋異常,讓我們處理起來很?煩。智能指針放到這樣的場景??就讓問題簡單多了。
?
2. RAII和智能指針的設計思路
?
?3. C++標準庫智能指針的使用
1.??C++標準庫中的智能指針都在<memory>這個頭?件下?,我們包含<memory>就可以是使?了,智能指針有好?種,除了weak_ptr他們都符合RAII和像指針?樣訪問的?為,原理上??主要是解決智能指針拷?時的思路不同。
2.??auto_ptr是C++98時設計出來的智能指針,他的特點是拷?時把被拷?對象的資源的管理權轉移給拷?對象,這是?個?常糟糕的設計,因為他會到被拷?對象懸空,訪問報錯的問題,C++11設計出新的智能指針后,強烈建議不要使?auto_ptr。其他C++11出來之前很多公司也是明令禁?使?這個智能指針的。
3.??unique_ptr是C++11設計出來的智能指針,他的名字翻譯出來是唯?指針,他的特點的不?持拷?,只?持移動。如果不需要拷?的場景就?常建議使?他。
4.??shared_ptr是C++11設計出來的智能指針,他的名字翻譯出來是共享指針,他的特點是?持拷?,也?持移動。如果需要拷?的場景就需要使?他了。底層是?引?計數的?式實現的。
5.??weak_ptr是C++11設計出來的智能指針,他的名字翻譯出來是弱指針,他完全不同于上?的智能指針,他不?持RAII,也就意味著不能?它直接管理資源,weak_ptr的產?本質是要解決shared_ptr的?個循環引?導致內存泄漏的問題。具體細節下?我們再細講。
補充:
這里有一個問題,大家思考一下!
筆記:
?