C++:几种智能指针之间的比较

本文深入探讨了C++中的三种智能指针:unique_ptr、shared_ptr和weak_ptr。unique_ptr拥有对象的唯一所有权,不允许复制,只能移动。shared_ptr允许多个指针共享同一对象,采用引用计数机制。weak_ptr作为辅助类型,提供对shared_ptr对象的观察而不影响其引用计数,用于解决循环引用问题。
摘要由CSDN通过智能技术生成

unique_ptr持有对对象的独有权——两个unique_ptr不能指向一个对象,即 unique_ptr 不共享它所管理的对象。它无法复制到其他 unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL)算法。只能移动 unique_ptr,即对资源管理权限可以实现转移

shared_ptr 是一个标准的共享所有权的智能指针,允许多个指针指向同一个对象,在使用引用计数的机制上提供了可以共享所有权的智能指针

weak_ptr :它不具有普通指针的行为,没有重载 operator* 和 operator->,表明其是功能较弱的智能指针。它协助 shared_ptr 工作,可获得资源的观测权,像旁观者那样观测资源的使用情况。观察者意味着 weak_ptr 只对 shared_ptr 进行引用,而不改变其引用计数,当被观察的 shared_ptr 失效后,相应的 weak_ptr 也相应失效。 weak_ptr 可用于打破循环引用。引用计数是一种便利的内存管理机制,但它有一个很大的缺点,那就是不能管理循环引用的对象
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值