天天看點

Effective C++ 讀書筆記之Part3.Resource Management

13. Use objects to manage resources.

總結:

第一,為了防止資源洩露,請使用RAII對象,它們在構造函數中獲得資源并在西溝函數中釋放資源。

第二,兩個常被使用的RAII class分别是tr1::shared_ptr和auto_ptr。前者通常是較佳選擇,因為其copy行為比較直覺。若選擇auto_ptr,複制動作會使它(被複制物)指向null。

14.Think carefully about copying behavior in resource-managing classes.

第一,複制RAII對象必須一并複制它所管理的資源,是以資源的copying行為決定RAII對象的copying行為。

第二,普遍而常見的RAII class copying行為是:抑制copying、施行引用計數法(reference counting)。不過其他行為也都可能被實作。

15.Provide access to raw resources in resource-managing classes.

第一,APIs往往要求通路原始資源(raw resources),是以每一個RAII class應該提供一個“取得其所管理之資源”的辦法。

第二,對原始資源的通路可能經由現實轉換或者隐式轉換。一般而言顯式轉換比較安全,但隐式轉換對客戶比較友善。

16.Use the same form in corresponding uses of new and delete.

如果你在new表達式中使用[],必須在相應的delete表達式中也使用[]。如果你在new表達式中不使用[],一定不要在相應的delete表達式中使用[]。

17.Store newed objects in smart pointers in standalone statements.

以獨立語句将newed對象存儲于(置入)職能指針内。如果不則樣做,一旦異常被抛出,有可能導緻難以覺察的資源洩露。

感悟:這部分的内容,除了new 和delete之前用的比較多之外,就是引用計數用的比較多。但是不是按照這本書的方式,這本書介紹的方式,了解的不是那麼透徹,因為之前沒這麼用過,也沒有見過這麼用的。這部分内容回頭需要重讀一下。

繼續閱讀