智能指针shared_ptr reset()

当智能指针调用了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版权协议,转载请附上原文出处链接和本声明。