Effective C++ 第十四條 Think carefully about copying behavior in ...
在資源管理類中小心 copying
當(dāng)我們使用類來管理資源(較為復(fù)雜,不僅僅是一個智能指針的事)的時候,我們通常需要設(shè)計自己的資源管理類。在構(gòu)建此類的時候,對于此類的 copying 行為需要多加注意。對于類的 copying 行為的設(shè)定,通常有四種參考:
禁止復(fù)制
設(shè)置計數(shù)器存儲當(dāng)前資源被引用數(shù)
復(fù)制底層資源
轉(zhuǎn)移底層資源的=擁有權(quán)
現(xiàn)在對上述四條一一解釋:
禁止復(fù)制
這一點可以參照 第六條,在類中刪除掉 assignment 和 copy constructor
設(shè)計計數(shù)器存儲當(dāng)前資源被引用數(shù)
這個就是設(shè)置一個 static 的變量來存儲當(dāng)前對象被引用的次數(shù),當(dāng)被引用次數(shù)為0的時候釋放資源。此設(shè)計類似于智能指針中的 shared_ptr.
復(fù)制底層資源
這一點如同常規(guī)的復(fù)制,但是要注意不要犯了“淺拷貝”的錯誤,要“深拷貝”,不了解區(qū)別的話可以查看我寫的 第五條,此設(shè)計如同普通的復(fù)制。
轉(zhuǎn)移底部資源控制權(quán)
這一點就相當(dāng)于資源只有一份,若 b 復(fù)制 a 則 a 的資源轉(zhuǎn)移到 b 手中,a 失去控制權(quán),類似于 unique_ptr。
標(biāo)簽: