條款13 以物件管理資源

2021-05-18 01:13:52 字數 368 閱讀 4999

問題**:

解決:智慧型指標。把資源放入物件內,利用析構函式確保釋放。

1、資源取得時機便是初始化時機"(resource acquisition is initialization;raii);

2、管理物件運用析構函式確保資源被釋放。

別讓auto_ptr同時指向同一物件。為了預防這個問題,能過copy建構函式或copy assignment操作符複製它們,它們會變成null,複製所得的指標將取得資源的唯一擁有權。

替代方案:引用計數型智慧型指標。複製動作比較直觀。

auto_ptr和trl::shared_ptr兩者都在其析構函式內做delete而不是delete動作。意味著在array身上使用它們是個餿主意。但boost提供。

條款13 以物件管理資源

我們都知道,當new乙個東西之後,必須delete它。但是問題可能出現在在new和delete之間 比如中間出現了異常,或者return之類的。一種比較好的作法是通過物件來管理 因為當物件的宣告週期結束以後,會呼叫析構函式,而在析構函式中delete,這樣的作法就靠譜多了。在標準c 中,定義了2種管...

條款13 以物件管理資源

一 如下 假設各種子型別繼承 root class investmen class investment investment createinevstment factory函式 void f 在 區域內乙個過早return,或者期間丟擲異常,流程控制不可能經過這條語句,所以這樣的話就會導致資源洩...

條款13 以物件管理資源

所謂有資源,就是你一旦使用了它,就要記得歸還系統。如果不這樣做,就會發生資源的浪費。這裡的資源不僅僅是指記憶體,也包括 檔案描述符,互斥鎖,資料庫連線 本條款是乙個直接而易懂的基於物件的資源管理方法,建立在c 對建構函式,析構函式,copy函式的基礎上。經驗顯示,經過訓練後嚴守這些做法,可以幾乎消除...