Item 14 資源管理類的拷貝

2021-06-16 05:41:09 字數 391 閱讀 2707

raii物件只能管理堆上new出來的資源,其它的不行。比如下面的mutex:

只能自定義乙個資源管理類,來管理這個mutex資源,以防止它被意外地忽略。

使用方法如下:

如果拷貝乙個raii資源,會發生什麼?

一般的處理方式:

1> 因為有的拷貝raii資源無意義,比如lock。所以禁止拷貝:

2> 如果拷貝有意義,那麼用「引用計數」機制。使用tr1::shared_ptr即可:

在mutexptr的ctor裡指定unlock作為計數器歸零時要做的「**資源」操作。

lock不需要再定義dtor。編譯器會自動生成。

3> 有時要求只能有乙個管理器指向資源,那麼可在拷貝時轉移所有權。auto_ptr就是這麼做的。

Item 14 資源管理類的拷貝

raii物件只能管理堆上new出來的資源,其它的不行。比如下面的mutex void lock mutex pm lock mutex pointed to by pm void unlock mutex pm unlock the mutex 只能自定義乙個資源管理類,來管理這個mutex資源,以...

Item 14 資源管理類要特別注意拷貝行為

例如,假設你使用 c api 提供的 lock 和 unlock 函式去操縱 mutex 型別的互斥體物件 void lock mutex pm void unlock mutex pm 為了確保你從不會忘記解鎖乙個被你加了鎖的 mutex,你希望建立乙個類來管理鎖。raii 原則規定了這樣乙個類的...

Starling之資源管理類

分享 概述每個遊戲或應用都必須有若干的資源 無論是紋理,聲音,位 字,或其它各種物件。這些資源可以是嵌入的 可以理解為所有資源都在乙個檔案的瀏覽器遊戲 或隨遊戲進行的 適用於手機遊戲儲存ram需要嵌入物件 在如何引入資源以不同的方式訪問它們有許多選擇。assetmanager幫助你做到這些。它是允許...