# smart_pointer **Repository Path**: diabio/smart_pointer ## Basic Information - **Project Name**: smart_pointer - **Description**: 这是个人用c++实现的智能指针,仅学习用 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-05-24 - **Last Updated**: 2025-07-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 手动实现智能指针 ### C++的智能指针种类 - `std::auto_ptr` - *特点*:C++98 引入,设计缺陷导致拷贝时所有权转移,源指针为空,易引发问题 - *状态*:C++11 废弃,C++17完全移除 - `std::unique_ptr` (独占所有权) - *特点*: - 独占对象所有权,不可复制, 仅支持移动语义转义所有权 - 效率高,资源占用小,推荐优先使用 - 支持自定义删除器 - *适用场景*:管理单个对象的生命周期(如替代 `new/delete`) - `std::shared_ptr` (共享所有权) - *特点*: - 多个实例共享同一对象,通过引用计数器管理生命周期 - 线程安全 (引用计数操作原子性) - 支持自定义删除器 - *缺点*:循环引用需要配合weak_ptr解决 - `std::weak_ptr` (弱引用) - *特点*: - 不增加引用计数,需从shared_ptr创建,解决循环引用问题 - 需通过 `lock()` 获取临时 `shared_ptr` 访问对象