[原创文章欢迎转载,但请保留作者信息]
Justin 于 2009-12-08
前面一个Item里
Scott Meyers
说的基本是用对象来申请和释放资源,这里他要说的是复制的问题。由于资源各自特性不一,对复制操作的要求自然也不能千篇一律。下面就是大师提供的几种应对方法:
-
不允许拷贝。当资源本身不能复制时,对象可以说“不”。怎么做?回到Item6炒冷饭去……
-
使用Reference-Count(引用计数),可以用上节说到的shared_ptr来干这个事,这里顺带介绍了shared_ptr提供的一个接口:一个可以在构造对象时定义的delete操作:如果对象是内存就是释放,如果对象是锁就是解锁。
-
直接复制。别人有什么,你就直接原封不动也复制一份。如果是内存的话说得过去,如果是锁,我想还是不能这样乱用哈。
-
移交所有权。这个不算是真正意义的复制,移交手续而已。最典型的例子就是auto_ptr的复制行为,Item13有炒过,去尝尝。
下课。一来因为我感冒了没法写那么多,二来因为人家大师在这一个Item里也就写了那么多……