并非所有的资源都是heap-based,对于这种资源而言,像auto_ptr和tr1::share_ptr这样的智能指针往往不适合作为资源掌管者。这个时候我们需要建立自己的资源管理类。
基础代码:
问题:如果对象被复制,会发生什么情况?
Lock m1(&m);
Lock m2(m1);
解决:1、禁止复制,参见条款6。2、“引用计算法”
注意:
1、复制底部资源,复制资源管理对象时,进行深度复制,如字符串对象内含一个指针指向一块HEAP内存。
2、转移底部资源的拥有权。参见条款13.