Effective C++ Item 14 在资源管理类中小心copying行为
2014-05-24 22:28
435 查看
本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie
建立自己的资源管理类
示例:互斥量的资源管理类
客户对Lock的用法
经验:复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为。
普遍而常见的RAII classcopying行为是:抑制copying,施行引用计数法(reference counting)。不过其他行为也都可能被实现。
示例1:抑制copying
建立自己的资源管理类
示例:互斥量的资源管理类
void lock(Mutex *pm);//锁定pm所指的互斥器 void unlock(Mutex *pm); //将互斥器解除锁定 class Lock{ public: explicit Lock(Mutext *pm) : mutexPtr(pm){lock(mutexPtr);} //获得资源 ~Lock(){unlock(mutexPtr);} private: Mutex *mutexPtr; }
客户对Lock的用法
Mutex m;//定义你需要的互斥器 { //建立一个区块用来定义critical section Lock ml(&m); //锁定互斥器 //… //执行critical section内的操作 } //在区块最末尾,自动解除互斥器锁定
经验:复制RAII对象必须一并复制它所管理的资源,所以资源的copying行为决定RAII对象的copying行为。
普遍而常见的RAII classcopying行为是:抑制copying,施行引用计数法(reference counting)。不过其他行为也都可能被实现。
示例1:抑制copying
class Lock: private Uncopyable{ //Uncopyable的copying函数是私有的 public: }示例2:施行引用计数法
class Lock{ public: explicit Lock(Mutex *): mutexPtr(pm, unlock)// 以某个Mutex初始化shared_ptr,并 // unlock函数为删除器 { lock(mutexPtr.get()); } private: std::tr1::shared_ptr<Mutex> mutexPtr;//使用shared_ptr替代raw pointer }
相关文章推荐
- Effective C++ Item 14-在资源管理中小心的copying行为
- effective c++ 条款14 在资源管理类中小心copying行为
- Effective C++——》条款14:在资源管理中小心copying行为
- C++之在资源管理类中小心copying行为(14)---《Effective C++》
- 读书笔记_Effective_C++_条款十四:在资源管理类中小心copying行为
- 读书笔记 effective c++ Item 14 对资源管理类的拷贝行为要谨慎
- [翻译] Effective C++, 3rd Edition, Item 14: 谨慎考虑 resource-managing classes(资源管理类)中的拷贝行为
- 条款14 在资源管理类中小心copying行为
- 条款14: 在资源管理类中小心copying行为
- 条款14、 在资源管理类中小心copying行为
- 条款14:在资源管理类中小心copying行为
- Effective C++ -----条款14: 在资源管理类中小心copying行为
- Effective C++(14) 在资源管理类中小心copying行为
- Item 14:资源管理类要特别注意拷贝行为 Effective C++笔记
- 条款14:在资源管理类中小心coping行为(Think carefully about copying behavior in resource-managing classes.)
- 读书笔记《Effective c++》 条款14 在资源管理类中小心copying行为
- 【14】在资源管理类中小心copying行为
- 条款14:在资源管理类中小心copying行为
- Effective C++ 条款14:在资源管理类中小心copying行为
- Effective C++ 学记之14 在资源管理类中 小心 copying行为