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

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Zero Lee

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