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
最新推荐文章于 2023-03-16 22:33:27 发布