[原創文章歡迎轉載,但請保留作者信息]
Justin 于 2009-12-08
前面一個Item里
Scott Meyers
說的基本是用對象來申請和釋放資源,這里他要說的是復制的問題。由于資源各自特性不一,對復制操作的要求自然也不能千篇一律。下面就是大師提供的幾種應對方法:
-
不允許拷貝。當資源本身不能復制時,對象可以說“不”。怎么做?回到Item6炒冷飯去……
-
使用Reference-Count(引用計數),可以用上節說到的shared_ptr來干這個事,這里順帶介紹了shared_ptr提供的一個接口:一個可以在構造對象時定義的delete操作:如果對象是內存就是釋放,如果對象是鎖就是解鎖。
-
直接復制。別人有什么,你就直接原封不動也復制一份。如果是內存的話說得過去,如果是鎖,我想還是不能這樣亂用哈。
-
移交所有權。這個不算是真正意義的復制,移交手續而已。最典型的例子就是auto_ptr的復制行為,Item13有炒過,去嘗嘗。
下課。一來因為我感冒了沒法寫那么多,二來因為人家大師在這一個Item里也就寫了那么多……