现在的位置: 首页 > 综合 > 正文

primer 复制控制 智能指针

2019年08月08日 ⁄ 综合 ⁄ 共 479字 ⁄ 字号 评论关闭

class HasPtr;

 

class U_ptr

{

friend class HasPtr;

int *ip;

size_t use;

U_ptr(int* p):ip(p),use(1){}

~U_ptr(){ delete ip;}

};

 

 

class HasPtr

{

public:

HasPtr( int *p,int i=0 ):ptr( new U_ptr(p)),val(i) {}

HasPtr( const HasPtr& Other ):ptr( Other.ptr ),val( Other.val ) { ++ ptr->use;}

HasPtr& operator = (const HasPtr& Other);

~HasPtr()

{ if ( --ptr->use == 0 )

{

delete ptr;

}

}

private:

int val;

U_ptr *ptr;

};

 

HasPtr& HasPtr::operator =(const HasPtr& Other)

{

++Other.ptr->use;

if ( --ptr->use == 0)

{

delete ptr;

}

ptr = Other.ptr;

val = Other.val;

return  *this;

 

}

抱歉!评论已关闭.