條款14 在資源管理類中小心copying行為

2021-06-22 07:49:58 字數 352 閱讀 7202

結論1:複製raii物件必須一併複製它所管理的資源,所以資源的copying行為決定raii物件的copying行為。

結論2:普遍而常見的raii class copying行為是:

(1)抑制copying,即禁止複製

很多時候允許raii物件被複製是不合理的。

(2)對底層資源施行引用計數法

在此情況下保有資源,直到最後乙個使用者被銷毀。tr1::shared_ptr即是如此。

(3)複製底部資源

在此情況下複製資源管理物件,同時複製其所管理的資源,即進行「深度複製」。

(4)轉移底部資源的擁有權

在此情況下永遠只有乙個raii物件指向乙個未加工資源。

條款14 在資源管理類中小心copying行為

總結 條款13介紹了作為資源管理類支柱的 resource acquisition isinitialization raii 原則,並描述了 auto ptr 和 tr1 shared ptr 在基於堆的資源上運用這一原則的表現。然而,並非所有的資源都是基於堆的,對於這樣的資源,像 auto pt...

條款14 在資源管理類中小心copying行為

條款14 在資源管理類中小心copy行為 1.複製raii物件必須一併複製它所管理的資源,所以資源的copying行為決定raii物件的copying行為。2.普遍而常見的raii class copying行為是 抑制copying 施行引用計數法 reference counting 不過其他行...

條款14 在資源管理類中小心copying行為

raii物件被複製時的幾種選擇 前兩種最常用 禁止複製 class a private uncopyable 引用計數,複製時將資源的 被引用數 遞增。raiiclass包含乙個shared ptr成員變數即可。shared ptr可以定製刪除器,即當引用為0時觸發。class lock 不必宣告析...