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
原创粉丝点击