Movatterモバイル変換


[0]ホーム

URL:


cppreference.com
Namespaces
Variants
    Actions

      std::weak_ptr<T>::use_count

      From cppreference.com
      <cpp‎ |memory‎ |weak ptr
       
       
      Memory management library
      (exposition only*)
      Allocators
      Uninitialized memory algorithms
      Constrained uninitialized memory algorithms
      Memory resources
      Uninitialized storage(until C++20)
      (until C++20*)
      (until C++20*)
      Garbage collector support(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
      (C++11)(until C++23)
       
       
      long use_count()constnoexcept;
      (since C++11)

      Returns the number ofshared_ptr instances that share ownership of the managed object, or0 if the managed object has already been deleted, i.e.*this is empty.

      Contents

      [edit]Parameters

      (none)

      [edit]Return value

      The number ofshared_ptr instances sharing the ownership of the managed object at the instant of the call.

      [edit]Notes

      The usage and behavior of this function are similar tostd::shared_ptr::use_count, but it returns a different count.

      [edit]Example

      Run this code
      #include <iostream>#include <memory> std::weak_ptr<int> gwp; void observe_gwp(){std::cout<<"use_count(): "<< gwp.use_count()<<"\t id: ";if(auto sp= gwp.lock())std::cout<<*sp<<'\n';elsestd::cout<<"??\n";} void share_recursively(std::shared_ptr<int> sp,int depth){    observe_gwp();// : 2 3 4if(1< depth)        share_recursively(sp, depth-1);    observe_gwp();// : 4 3 2} int main(){    observe_gwp();{auto sp=std::make_shared<int>(42);        gwp= sp;        observe_gwp();// : 1        share_recursively(sp,3);// : 2 3 4 4 3 2        observe_gwp();// : 1}    observe_gwp();// : 0}

      Output:

      use_count(): 0   id: ??use_count(): 1   id: 42use_count(): 2   id: 42use_count(): 3   id: 42use_count(): 4   id: 42use_count(): 4   id: 42use_count(): 3   id: 42use_count(): 2   id: 42use_count(): 1   id: 42use_count(): 0   id: ??

      [edit]See also

      checks whether the referenced object was already deleted
      (public member function)[edit]
      Retrieved from "https://en.cppreference.com/mwiki/index.php?title=cpp/memory/weak_ptr/use_count&oldid=174842"

      [8]ページ先頭

      ©2009-2025 Movatter.jp