一篇搞懂C++ STL 智能指针监视器std::weak_ptr

文章目录

  • 前言
  • 为什么使用 `std::weak_ptr`
  • `std::weak_ptr` 与 `std::shared_ptr` 和 `std::unique_ptr` 的区别
  • `std::weak_ptr` 的构造函数和操作函数
    • 构造函数
    • 成员函数
  • 如果有多个 `std::shared_ptr` 指向同一内存
  • 示例代码
  • 简单来说
  • 总结


前言

在 C++ 中,智能指针是管理动态分配内存的有效工具。除了 std::shared_ptrstd::unique_ptr,C++11 还引入了 std::weak_ptr。它是一个辅助智能指针,用于解决 std::shared_ptr 引用计数可能引发的循环引用问题。std::weak_ptr 不管理对象的生命周期,只是提供对由 std::shared_ptr 管理的对象的非拥有访问权。


为什么使用 std::weak_ptr

  • 避免循环引用std::weak_ptr 可以打破 std::shared_ptr 引用计数的循环引用问题。通过不增加引用计数,避免了内存泄漏。
  • 延迟访问std::weak_ptr 可以在需要的时候访问 std::shared_ptr 管理的对象,而不强制要求对象必须存在。
  • 观察者模式std::weak_ptr 用于

你可能感兴趣的:(C++大合集,c++,开发语言,c,数据结构,软件工程,stl,qt)