primer 复制控制 智能指针

本文探讨了智能指针的实现原理,包括如何通过友元类实现对象引用计数,以及如何通过复制构造函数和赋值操作符来管理对象的生命周期。详细解释了对象的借用和所有权转移机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值