class HasPtr
{
public:
HasPtr(const string &s=string()):ps(new string(s)),i(0),use(new size_t(1)){}
HasPtr(const HasPtr &p):ps(p.ps),i(p.i),use(p.use){++*use;}
HasPtr& operator = (const HasPtr &r)
{
if(&r==this)
return *this;
++*r.use;
if(--*use==0)
{
delete ps;
delete use;
}
ps=r.ps;
i=r.i;
use=r.use;
return *this;
}
~HasPtr(){
if(--*use==0)
{
delete ps;
delete use;
}
}
private:
string *ps;
int i;
size_t *use;
};shared_pointer
最新推荐文章于 2024-06-12 17:41:24 发布
本文深入探讨了C++智能指针HasPtr的实现细节,包括构造函数、赋值运算符和析构函数的工作原理,旨在帮助读者理解和掌握智能指针在内存管理中的应用。
1360

被折叠的 条评论
为什么被折叠?



