特色模式: 弱引用
12345678910111213141516171819202122232425262728293031323334 | #include <memory> class bar; class foo { public: foo(const std::shared_ptr<bar>& b) : forward_reference{b} { } private: std::shared_ptr<bar> forward_reference; }; class bar { public: void set_back_reference(const std::weak_ptr<foo>& f) { this->back_reference = f; } void do_something() { std::shared_ptr<foo> shared_back_reference = this->back_reference.lock(); if (shared_back_reference) { // 使用 *shared_back_reference } } private: std::weak_ptr<foo> back_reference; }; |
需要 c++11 或更新版本
意图
维护对共享动态分配对象的非所有权引用,以打破循环依赖。
描述
std::weak_ptr
类型表示对具有共享所有权(std::shared_ptr
)的动态分配对象的非所有权引用。由于它们不计入所引用的托管对象的引用计数,因此该对象...
所有模式
算法
类
并发
容器
函数
输入流
内存管理
输出流
随机数生成
范围 (Ranges)
模板
时间
行为型
创建型
← 所有模式