c++ shared_ptr智慧指標使用注意事項
阿新 • • 發佈:2019-02-13
#include <boost/make_shared.hpp>
#include <vector>
using namespace std;
using namespace boost;
int main (int argc, const char * argv[])
{
typedef vector< shared_ptr<int> > sharedContainers;
sharedContainers sharedArray(10);
int i=0;
for(sharedContainers::iterator pos = sharedArray.begin() ;pos!=sharedArray.end();++pos)
{
*pos = make_shared<int>(++i);
}
cout<<"sharedArray[5]的初始值:"<<*sharedArray[5]<<endl;
cout<<"sharedArray[5]的初始引用計數為:"<<sharedArray[5].use_count()<<endl;
shared_ptr<int> p1 = sharedArray[5];
*p1 = 10;
cout<<"sharedArray[5]經過賦值後的值:"<<*sharedArray[5]<<endl;
cout<<"sharedArray[5]賦值後的引用計數為:"<<sharedArray[5].use_count()<<endl;
shared_ptr<int> p2(sharedArray[5]);
cout<<"sharedArray[5]複製和賦值後的引用計數為:"<<sharedArray[5].use_count()<<endl;
cout<<"sharedArray[5]的地址:"<<sharedArray[5]<<",p1的地址:"<<p1<<",p2的地址:"<<p2<<endl;
*p2 = 5;
cout<<"sharedArray[5]經過複製後的值:"<<*sharedArray[5]<<endl;
return 0;
}