惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
aimingoo的专栏
aimingoo的专栏
IT之家
IT之家
G
Google Developers Blog
爱范儿
爱范儿
博客园 - 司徒正美
Recent Announcements
Recent Announcements
The Register - Security
The Register - Security
J
Java Code Geeks
The Cloudflare Blog
M
MIT News - Artificial intelligence
Apple Machine Learning Research
Apple Machine Learning Research
Microsoft Security Blog
Microsoft Security Blog
博客园 - Franky
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
Blog — PlanetScale
Blog — PlanetScale
Vercel News
Vercel News
宝玉的分享
宝玉的分享
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
B
Blog
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
T
Troy Hunt's Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
H
Hacker News: Front Page
H
Help Net Security
S
Security @ Cisco Blogs
V
V2EX
Security Archives - TechRepublic
Security Archives - TechRepublic
Stack Overflow Blog
Stack Overflow Blog
O
OpenAI News
L
LINUX DO - 最新话题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
S
Secure Thoughts
Help Net Security
Help Net Security
F
Full Disclosure
博客园 - 叶小钗
The Hacker News
The Hacker News
Spread Privacy
Spread Privacy
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
K
Kaspersky official blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V
Vulnerabilities – Threatpost
P
Privacy International News Feed
Scott Helme
Scott Helme

博客园 - Zero Lee

调用栈(call stack) 关于STL allocator Calculate maximum sum of any subarray set Calcuate power n of x recursively Convert one binary search tree to double-linked list 设计包含min函数的栈 类模板的模板友元函数定义 一道百度的面试题解答 非printf形式的十六进制和二进制打印(雅虎面试题) 一道腾讯面试题 (转)C++中extern “C”含义深层探索 selection algorithm to select nth small elements based on partition 删除与某个字符相邻且相同的字符 产生全排列的方法解析 一组数的全排列和组合程序实现 求一个正整数的平方根程序实现 [转]多线程队列的算法优化 [转载] STL allocator的介绍和一个基于malloc/free的allocator的简单实现 如何将一片内存链接成链表
One simple counted object pointer
Zero Lee · 2010-10-17 · via 博客园 - Zero Lee

1 template <class T>
2  class Pointer
3 {
4 protected:
5 unsigned *ptrCount;
6 T *ptrObject;
7
8 void ptrDetach(void)
9 {
10 if(ptrCount && --(*ptrCount)==0) {
11 delete ptrObject;
12 delete ptrCount;
13 }
14 ptrObject = NULL;
15 ptrCount = NULL;
16 }
17
18 public:
19 explicit Pointer(T* ptr = NULL) : ptrObject(ptr)
20 {
21 ptrCount = new unsigned;
22 *ptrCount = 1;
23 }
24
25 Pointer(const Pointer<T> &ref)
26 {
27 ptrObject = ref.ptrObject;
28 ptrCount = ref.ptrCount;
29 ++(*ptrCount);
30 }
31
32 inline virtual ~Pointer()
33 {ptrDetach();}
34
35
36 Pointer& operator=(const Pointer<T> &ref)
37 {
38 if(this != &ref) {
39 ptrDetach();
40 ptrObject = ref.ptrObject;
41 ptrCount = ref.ptrCount;
42 ++(*ptrCount);
43 }
44 return *this;
45 }
46
47 inline T& operator*() const
48 {return *ptrObject;};
49
50 inline T* getObject() const
51 {return ptrObject;};
52
53 inline T* operator->() const
54 {return ptrObject;};
55
56 inline bool operator!() const
57 {return (*ptrCount == 1);};
58
59 inline int operator++() const
60 {return ++(*ptrCount);};
61
62 int operator--() const
63 {
64 if(*ptrCount == 1) {
65 delete this;
66 return 0;
67 }
68 return --(*ptrCount);
69 }
70 };

posted @ 2010-10-17 15:22  Zero Lee  阅读(233)  评论()    收藏  举报