C++ 智能指针
来源:互联网 发布:预包装食品网络销售 编辑:程序博客网 时间:2024/06/09 04:33
shared_ptr 与 weak_ptr 一招鲜打光天下
#include <iostream>#include <memory>class logic_player{public:int id;};void Add(std::shared_ptr<logic_player> aa){aa->id += 100;std::shared_ptr<logic_player> bb = aa;std::weak_ptr<logic_player> ww1 = aa;std::cout << "aa1的引用计数" << ww1.use_count() << std::endl;std::shared_ptr<logic_player> cc = ww1.lock();cc->id++;std::cout << "aa1___ddd的引用计数" << ww1.use_count() << std::endl;std::cout << "资源是否失效:" << ww1.expired() << std::endl;}int main(){logic_player* b = new logic_player();std::shared_ptr<logic_player> aa1 = std::shared_ptr<logic_player>(b);aa1->id=100;Add(aa1);std::shared_ptr<logic_player> aa2 = aa1;aa2->id = 100;Add(aa2);Add(aa1);Add(aa1);std::shared_ptr<logic_player> aa3 = std::shared_ptr<logic_player>(aa1.get());;std::shared_ptr<logic_player> aa4 = aa2;std::cout<<aa1->id<<std::endl;std::cout << aa2->id<<std::endl;std::cout << aa3->id << std::endl;std::cout << aa4->id << std::endl;std::weak_ptr<logic_player> ww1 = aa1;delete b;std::cout<<"aa1的引用计数"<<ww1.use_count()<<std::endl;std::cout << "aa2的引用计数" << ww1.use_count() << std::endl;std::cout << "aa3的引用计数" << aa3.use_count() << std::endl;std::cout << "aa3的引用计数" << aa1.use_count() << std::endl;while (true){}return 0;}
0 0
- c++:智能指针
- C++:智能指针
- 【C++】智能指针
- 【C++】智能指针
- C++PJ智能指针
- 【c++】智能指针
- 【C++】智能指针auto_ptr
- C++,智能指针
- C++,boost智能指针
- 智能指针模拟C
- [C++]智能指针
- 【C++】 浅析智能指针
- C++_智能指针
- C++:初识智能指针
- C++::智能指针
- 【C++】智能指针
- c智能指针:unique_ptr
- 【C++】智能指针
- 数据挖掘-目录-降维(Dimensionality Reduction)
- WebGL通过鼠标点击绘点
- EJB基础
- Android学习之分析代码&巩固基础
- string的erase方法, 第一次见, 没什么好说的
- C++ 智能指针
- ACM/ICPC Java高精度计算
- Docker 存储原理
- VMware虚拟机安装VMware Tools
- 数据挖掘-目录-评估
- 14. Longest Common Prefix
- MySQL timestamp NOT NULL插入NULL的问题
- bat脚本--关于简单的少量文件夹创建
- 图