結論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 不必宣告析...