笑看风云

记录生活中的启迪与感动
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

引用计数器(Reference Counter)实现

Posted on 2009-12-24 14:23  清晨的风  阅读(510)  评论(0)    收藏  举报
 1     class IReferenceCounted
 2     {
 3     public:
 4 
 5         IReferenceCounted():ReferenceCounter(1)
 6         {
 7         }
 8 
 9         virtual ~IReferenceCounted()
10         {
11         }
12 
13         void create() const { ++ReferenceCounter; }
14 
15         
16         bool drop() const
17         {
18             assert(ReferenceCounter > 0)
19 
20             --ReferenceCounter;
21 
22             if (!ReferenceCounter)
23             {
24                 delete this;
25                 return true;
26             }
27 
28             return false;
29         }
30 
31 
32         int getReferenceCount() const
33         {
34             return ReferenceCounter;
35         }
36         
37     private:
38 
39         //! The reference counter. Mutable to do reference counting on const objects.
40         mutable int ReferenceCounter;
41     };
42 
43 }