智能指针综合实践:对象生命周期管理系统
任务概述
基于之前学习的 shared_ptr 与 weak_ptr 知识,设计并实现一个简单的对象管理系统。该系统需要模拟现实场景中的对象引用关系,重点实践以下核心概念:
- 共享所有权:使用
shared_ptr管理对象的生命周期 - 弱引用观察:使用
weak_ptr观察对象而不影响其生命周期 - 循环引用检测:识别并处理智能指针中的典型内存泄漏问题
- 资源自动管理:利用 RAII 原理确保内存安全
任务要求
1. 系统核心组件
设计两个核心类:
Object 类
- 包含唯一标识符
id和名称name - 使用
std::vector<std::shared_ptr<Object>>存储强引用(拥有所有权的引用) - 使用
std::vector<std::weak_ptr<Object>>存储弱引用(仅观察的引用) - 提供添加/移除引用的方法
- 实现析构函数以验证对象正确释放
ObjectManager 类
- 单例模式或静态管理类,负责全局对象管理
- 提供对象创建工厂方法
createObject(name) - 维护所有对象的
shared_ptr集合 - 提供建立对象间引用的方法
- 实现循环引用检测功能
2. 必须实现的功能
| 功能点 | 具体要求 | 涉及知识点 |
|---|---|---|
| 对象创建 | 使用 std::make_shared 创建对象,保证高效内存分配 |
make_shared 优势 |
| 强引用建立 | 对象 A 强引用对象 B,A 拥有 B 的所有权 | shared_ptr |


473

被折叠的 条评论
为什么被折叠?



