Effective C++ 筆記(3)資源管理

weixin_32208747發表於2018-06-25

13、以物件管理資源

  (1)、為防止資源洩漏,請使用RAII物件,它們在建構函式中獲得資源並在解構函式中釋放資源

  (2)、使用智慧指標。shared_ptr、auto_ptr

14、在管理資源類中注意copying行為

  (1)、複製RAII物件必須一併複製它所管理的資源(記憶體、檔案、鎖),所以資源的coping行為取決於RAII物件的copying行為;

  (2)、普遍常見的RAII class copying行為是:禁止複製(繼承Uncopyable)、採用引用計數法(shared_ptr),或者其他方法。

15、在資源管理類中提供對原始資源的訪問

  (1)、資源管理類中應該提供訪問其原始資源的介面;

  (2)、顯式轉換(提供函式,如shared_ptr的get),隱式轉換(重寫operator)。一般顯式比較安全,但隱式轉換比較方便。

16、成對使用new和delete時要採用相同的形式

  (1)、new-->delete

  (2)、new[]-->delete[]

17、以獨立語句將物件置入智慧指標

  (1)、在單獨的語句內以智慧指標儲存newed所得的物件,避免丟擲異常時,造成難以察覺的資源洩漏。

void processWidget(shared_ptr<Widget> pw, int priority);

processWidget(new Widget, priority);//error shared_ptr的建構函式是explicit

processWidget(shared_ptr<Widget>(new Widget), priority()); //error c++處理引數的次序不固定,並非從右到左。

shared_ptr<Widget> pw(new Widget);
processWidget(pw, priority()); //ok

 

相關文章