C++智能指针(4)—— weak

C++智能指针(4)—— weak,第1张

C++智能指针(4)—— weak

C++智能指针(4)—— weak_ptr
  • 1、weak_par
  • 2、弱智能指针的部分源码实现

1、weak_par

弱智能指针
①不占用引用计数
②不能直接引用
③如果要用需要先转为强智能指针

void text01()
{
	shared_ptr p(new int(10));
	weak_ptrw_p(p);
	cout << *p << endl;
	cout << *(w_p.lock()) << endl;
}
int main()
{
	text01();
	return 0;
}

程序运行结果:

2、弱智能指针的部分源码实现
#pragma once
#include "shared_ptr.h"
template 
class Mweak_ptr
{
public:
	Mweak_ptr(Mshared_ptr& s_ptr)
	{
		_s_ptr = s_ptr;
		Mshared_ptr::_count.insert(make_pair(_ptr, 1));
	}
	Mshared_ptr lock()
	{
		if (Mshared_ptr::_count.find(_s_ptr) != Mshared_ptr::_count.end())
		{
			return Mshared_ptr(_s_ptr);
		}
		return Mshared_ptr();
	}
private:
	T* _s_ptr;
};

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5635468.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存