当智能指针调用了reset函数的时候,就不会再指向这个对象了。
如果还有其它智能指针指向这个对象,那么其他的智能指针的引用计数会减1。
void test()
{
std::shared_ptr<int> p1(new int(100));
std::shared_ptr<int> p2 = p1;
std::shared_ptr<int> p3 = p1;
cout << "p1: " << p1.use_count() << endl; //3
cout << "p2:" << p2.use_count() << endl; //3
cout << "p3:" << p3.use_count() << endl; //3
p1.reset();
cout << "p1: " << p1.use_count() << endl; //0
cout << "p2:" << p2.use_count() << endl; //2
cout << "p3:" << p3.use_count() << endl; //2
//cout << *p1 << endl; //error,p1指针已经释放了
cout << *p2 << endl; //100
cout << *p3 << endl; //100
return;
}
版权声明:本文为ff_gogo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。