[笔记]2.智能指针

本文介绍了C++11标准中的三种智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr。std::unique_ptr实现独占所有权,具有最小的开销;std::shared_ptr通过引用计数管理对象生命周期,但有额外的内存开销;std::weak_ptr作为std::shared_ptr的补充,不增加对象的引用计数,用于解决循环引用问题。
摘要由CSDN通过智能技术生成

智能指针

原生指针是一款很强大的工具,但是依据进数十年的经验,可以确定的一点是:稍有不慎,这 个工具就会反噬它的使用者。

C++11标准中规定了四个智能指针:
std::auto_ptr,std::unique_ptr,std::shared_ptr,std::weak_ptr.他们都是用来辅助管理动态分配对象的声明周期。

std::unique_ptr

当要使用一个智能指针的时候,首先要想到的应该是std::unique_ptr。默认情况下,std::unique_ptr和原生指针同等大小,对于大多数操作,他们执行的底层指令也一样。

std::unique_ptr具现了独占语义,一个非空的std::unique_ptr永远拥有它指向的对象。

很容易将一个std::unique_ptr转化为std::shared_ptr.

    std::unique_ptr<Widget> getWidget();

    std::shared_ptr<Widget> pWidget = getWidget();

std::shared_ptr

std::shared_ptr通过引用计数来管理对象的生命周期。std::shared_ptr的构造函数自动递增这个计数,析构函数自动递减这个计数。如果std::shared_ptr在执行减一后发现引用计数变成了0,说明没有其他的std::shared_ptr在指向这个资源了,所以std::shared_ptr直接析构了它指向的空间。

std::sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值