C++智能指针(简单介绍)

智能指针概念

所谓智能指针就是智能/自动化的管理指针所指向的动态资源的释放。它是一个类,有类似指针的功能,对*和->运算符进行了重载。

常见智能指针auto_ptr,unique_ptr,,shared_ptr,weak_ptr

使用智能指针必须添加头文件include<memory>

智能指针对->和*运算符做了重载

<1>auto_ptr

使用

 

缺点:

auto_ptr不能赋值和用于初始化另一个对象,如果进行了此类操作,则原智能指针对象无效

auto_ptr只能管理单个对象,不能管理对象数组

再c++11标准中已经废弃auto_ptr

 <2>unique_ptr

使用

 

1.可以看作是auto_ptr的代替品。因为它对对象的所有权比较专一,所以叫unique

2.不允许进行拷贝构造和赋值操作

3.允许函数返回unique_ptr;

4.支持对象数组

 <3>shared_ptr

使用

  shared_ptr定义智能指针A拷贝构造产生智能指针B的时候,A和B共享同一个对象

  shared_ptr定义智能指针A赋值shared_ptr定义的智能指针B的时候,A和B共享同一个对象

实现原理:shared_ptr智能指针实现的时候,它内部使用了引用计数的技术

编译参数:-std=c++11

缺点:循环引用的时候,会带来内存泄漏

<4>weak_ptr

特点:

1.weak_ptr是为配合shared_ptr而引入的一种智能指针来协助shared_ptr工作

2.weak_ptr的含义为“弱引用”,它的构造和析构不会引起技术的增加或减少

3.它可以从一个shared_ptr或另一个weak_ptr产生

4.他没有重载*和->,所以不能通过它访问对象内部的成员

5.可以使用它提供的lock()获得一个可用的shared_ptr对象

编译参数—— -std=c++11

shared_ptr实现原理总结:

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值