首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

std::weak_ptr::expired

bool expired() const;

(since C++11)

检查托管对象是否已被删除。相当于use_count() == 0...

参数

%280%29

返回值

true如果托管对象已被删除,false否则。

例外

noexcept规格:

noexcept

注记

如果托管对象在线程之间共享,则此函数本质上是动态的。特别是,一个错误的结果可能在使用之前就会变得陈旧。真正的结果是可靠的。

演示如何使用过期来检查指针的有效性。

二次

代码语言:javascript
复制
#include <iostream>
#include <memory>
 
std::weak_ptr<int> gw;
 
void f()
{
    if (!gw.expired()) {
        std::cout << "gw is valid\n";
    }
    else {
        std::cout << "gw is expired\n";
    }
}
 
int main()
{
    {
        auto sp = std::make_shared<int>(42);
        gw = sp;
 
        f();
    }
 
    f();
}

二次

产出:

二次

代码语言:javascript
复制
gw is valid
gw is expired

二次

另见

lock

creates a shared_ptr that manages the referenced object (public member function)

use_count

returns the number of shared_ptr objects that manage the object (public member function)

代码语言:txt
复制
 © cppreference.com

在CreativeCommonsAttribution下授权-ShareAlike未移植许可v3.0。

扫码关注腾讯云开发者

领取腾讯云代金券