std::weak_ptr 每次 lock() 都會致使自身use_count自增一次

代碼:ios

#include <memory>c++

#include <iostream>.net


int main(int argc, char*argv[]){c++11

    std::shared_ptr<int> a(new int(1));get

    std::weak_ptr<int>d(a);io

    std::cout<<"d.use_count() = "<<d.use_count()<<std::endl;編譯

    std::cout<<"a.use_count() = "<<d.use_count()<<std::endl;test

    std::shared_ptr<int> b = d.lock();stream

    std::cout<<"d.use_count() = "<<d.use_count()<<std::endl;gc

    std::cout<<"a.use_count() = "<<d.use_count()<<std::endl;

    std::shared_ptr<int> c = d.lock();

    std::cout<<"d.use_count() = "<<d.use_count()<<std::endl;

    std::cout<<"a.use_count() = "<<d.use_count()<<std::endl;

    return 0;

}

編譯、運行:

ongonginging@localhost :~/ongonginging/test/cpp11$ g++ --std=c++11 weak.cpp 

ongonginging@localhost :~/ongonginging/test/cpp11$ ./a.out 

d.use_count() = 1

a.use_count() = 1

d.use_count() = 2

a.use_count() = 2

d.use_count() = 3

a.use_count() = 3

相關文章
相關標籤/搜索