c++智能指针

来源:互联网 发布:潘多拉 设置网络 编辑:程序博客网 时间:2024/05/16 07:43

shared_ptr的作用有如同指针,但会记录有多少个shared_ptrs共同指向一个对象。这便是所谓的引用计数(reference counting)。一旦最后一个这样的指针被销毁,也就是一旦某个对象的引用计数变为0,这个对象会被自动删除。


#include <memory>#include <iostream>using namespace std;int main(){auto sp1=make_shared<int>(5);cout<<"sp1.unique()=="<<boolalpha<<sp1.unique()<<endl;//unique返回指针的引用计数shared_ptr<int> sp2=sp1;cout<<"sp1.unique() == "<<boolalpha<<sp1.unique()<<endl;cout<<"sp1.use_count():"<<sp1.use_count()<<endl;//use_count返回该指针的引用计数cout<<"sp2.use_count():"<<sp2.use_count()<<endl;cout<<"sp1.get(): "<<sp1.get()<<endl;cout<<"sp2.get(): "<<sp2.get()<<endl;sp1.reset();//reset清除指针的引用计数cout<<"sp1.use_count(): "<<sp1.use_count()<<endl;cout<<"sp2.use_count(): "<<sp2.use_count()<<endl;shared_ptr<int> sp3(new int(10));cout<<*sp2<<endl;cout<<*sp3<<endl;sp2.swap(sp3);cout<<*sp2<<endl;cout<<*sp3<<endl;system("pause");return 0;}


0 0
原创粉丝点击