c++中weak_ptr到底是干什么用的?

如题,看得我稀里糊涂还看不懂。c++第五版。
2025-03-04 21:22:03
推荐回答(2个)
回答1:

按照我的理解,weak_ptr只能跟踪一个共享的资源,但并不实际拥有,也不会阻碍资源被释放
读取共享的资源前需要执行lock,得到shared_ptr之后才能访问

回答2:

  weak_ptr是为配合shared_ptr而引入的一种智能指针来协助shared_ptr工作,它可以从一个shared_ptr或另一个weak_ptr对象构造,它的构造和析构不会引起引用记数的增加或减少。没有重载*和->但可以使用lock获得一个可用的shared_ptr对象。
  weak_ptr的一个重要用途是通过lock获得this指针的shared_ptr,使对象自己能够生产shared_ptr来管理自己,但助手类enable_shared_from_this的shared_from_this会返回this的shared_ptr,只需要让想被shared_ptr管理的类从它继承即可。