C++新特性 weak_ptr的提出及解决循环引用的思路

/*
	C++新特性 weak_ptr的提出及解决循环引用的思路
*/

#include <memory>


/*
	问题1:
		为什么会存在强弱指针计数
		弱指针不增加强指针的引用次数 ,弱指针使用前需要lock()增强,强指针引用次数增加
		weak_ptr_uses_count
		一般结合强智能指针使用,它指向一个 shared_ptr 管理的对象. 进行该对象的内存管理
		的是强引用的 shared_ptr. weak_ptr只是提供了对管理对象的一个访问手段;weak_ptr 
		设计的目的是为配合 shared_ptr 而引入的一种智能指针来协助 shared_ptr 工作, 不会
		引起引用记数的增加或减少。

	问题2
		强弱指针计数的用途是什么,具体代码是什么
*/


int main()
{
	std::shared_ptr<int> sptr(new int(3));
	std::shared_ptr<int> sptr2(new int(3)); //两个指针指向通个指针

	std::weak_ptr<int> wptr = sptr;

	if (!wptr.expired())   //判断是否指向强指针
	{
		std::shared_ptr<int > sptr3 = wptr.lock();  //将弱指针转化为强指针
	}

	return 0;
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值