37.智能指针

重点手撕share ptr

静态的也不行

三个对象共享这个引用计数,这就不对了,指向不同资源,静态属于管理这个类型的所有对象,而我们只是想要管理某个对象的引用计数。用动态开辟方式

unique ptr特化了一个这个版本,【】没问题,但是第一个unique模版参数是在哪穿的?

并不是在构造传,可以看到构造也有,但是不是一个函数模版,不能直接推

share是构造函数传,unique是在类声明传

unnique在下层用这个类型实例化出一个仿函数对象,share ptr用啥都好用(lamda 仿函数 函数指针,,,),但是unique仿函数好用,lamda不好用 ,在函数参数传个lamda没毛病,模版参数传lamda,就有困扰,拿不到类名。之前share是通过实参传给形参,自动推导lamda类型,unique必须传类型,lamda不行,这么办:

这个关键字可以推导类型。lamda底层还有一些限制还是不行,,构造地方也要显示穿,因为lamda类型不支持默认构造,所以生成不出来,所以传一个对象过去,用这个对象拷贝构造,unique定制删除器就用仿函数,shareptr 定制删除器都可以相对建议lamda。

unique 【】就这样

其他的这样。

share都行。

右边share ptr引用计数到9,就释放,左下减到0不释放,我怎么知道这个引用计数有没有人指向所以再加一层引用计数,weak ptr不参与资源管理但是参与引用计数管理

相关推荐
呼啦啦5617 小时前
C++vector
java·c++·缓存
2401_892070987 小时前
顺序栈(动态数组实现) 超详细解析(C++ 语言 + 可直接运行)
数据结构·c++·顺序栈
念恒123068 小时前
Linux初识
linux·服务器·c++
旖-旎8 小时前
哈希表(存在重复元素)(3)
数据结构·c++·学习·算法·leetcode·散列表
计算机安禾8 小时前
【数据结构与算法】第39篇:图论(三):最小生成树——Prim算法与Kruskal算法
开发语言·数据结构·c++·算法·排序算法·图论·visual studio code
fish_xk8 小时前
c++内存管理
开发语言·c++·算法
chh5639 小时前
C++--内存管理
java·c语言·c++·windows·学习·面试
Yungoal9 小时前
C++ 标准模板库STL(Standard Template Library)
c++·哈希算法·散列表
我真不是小鱼9 小时前
cpp刷题打卡记录27——无重复字符的最长子串 & 找到字符串中所有字母的异位词
数据结构·c++·算法·leetcode
一直不明飞行9 小时前
C++:string,写法s.find(‘@‘) != s.end()是否有问题
开发语言·c++·算法