c++11智能指针

我们常见的智能指针包括共享智能指针(shared_ptr)、弱智能指针(weak_ptr)、独占智能指针(unique_ptr)。还有一个特殊的智能指针(auto_ptr)。

共享智能指针(shared_ptr)是指能让多个指针可以同时共享同一个对象,持有此对象的最后一个指针拥有销毁对象的责任,并清理与该对象相关的所有资源。

弱智能指针(weak_ptr)允许共享对象但是不能拥有其对象,一旦持有此对象的最后一个智能指针失去了所有权,那么任何的weak_ptr都会自动成空。可以将这个指针看成弱化版的共享智能指针,功能就是去监督共享智能指针的引用计数是否为0。

独占智能指针(unique_ptr)是c++11才开始提供的类型,是一种异常时可以帮助避免资源泄露的智能指针,并且是独占方式用户,不能共享,一个对象只能由一个智能指针持有。

auto_ptr是一个被c++98引入的指针,用于动态分配的对象,但是在c++11标准中,因为它存在一些潜在的问题和缺陷。可使用独占智能指针(unique_ptr)所代替。

auto_ptr和uniqur_ptr的比较:

auto_ptr可以赋值拷贝,复制拷贝后的有权转移;unique_ptr无拷贝赋值语义,但是却实现了move语义。

auto_ptr对象不能管理数组,unique_ptr可以管理数组,可以析构调用delete[]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值