小编zen*_*eno的帖子

lock()和expired()之间的差异是什么?weak_ptr C++

最近我从C++ 11开始.我研究过weak_ptr.有两种获取原始指针的方法.

  1. lock() 功能

    shared_ptr<Foo> spFoo = wpPtr.lock();
    
    if(spFoo) {
        spFoo->DoSomething();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. expired() 功能

    if(!wpPtr.expired())
    {
        shared_ptr<Foo> spFoo = wpPtr.lock();
        spFoo->DoSomething();
    }
    
    Run Code Online (Sandbox Code Playgroud)

哪种方式更好?这两种方式有什么不同?

c++ smart-pointers shared-ptr weak-ptr c++11

12
推荐指数
3
解决办法
6475
查看次数

标签 统计

c++ ×1

c++11 ×1

shared-ptr ×1

smart-pointers ×1

weak-ptr ×1