#include <memory>
#include <iostream>
//使用lock方法来获取所监视的shared_ptr对象
std::weak_ptr<int> gw;
void f()
{
if (gw.expired())
{
std::cout << "gw is expired" << std::endl;
}
else
{
auto spt = gw.lock();
std::cout << *spt << "\n";
}
}
int main87()
{
//弱引用指针weak_ptr是用来监视shared_ptr的,不会使得引用计数加1
//weak_ptr没有重载操作符*和->,因为它不共享指针,不能操作资源
//weak_ptr可以用来返回this指针以及解决循环引用的问题。
//1.通过use_count()方法获得当前资源的引用计数
//2.通过expired()方法判断所观测的资源是否已经释放
//3.使用lock方法来获取所监视的shared_ptr对象
{
auto sp = std::make_shared<int>(43);
gw = sp;
f();
}
//4.使用weak_ptr解决循环引用的问题
return 0;
}
智能指针之weak_ptr
最新推荐文章于 2023-07-05 16:05:45 发布