智能指针

将对堆空间的分配转化为对对象的操作,因为一般情况下你是手动写new和delete的,而一旦使用对象就能自动构造函数分配空间和析构函数来释放空间,这样堆空间的使用就实现了自动化,这就减少了人为的失误造成的内存泄露。
智能指针其实也是模版类。
常用的智能指针有3种,它们是auto_ptr、unique_ptr和shared_ptr,在使用它们之前一定要添加memory头文件,如下图所示:



它们的用法如下:



这个new double实际上是声明了一个无名指针,这个指针作为空间的地址而存在。其实,pd的参数是下图中红框所示区域:

如上图所示,即它其实是new+构造函数的形式,虽然有时候将默认构造函数的括号省略,但那仍然是构造函数。
智能指针有带有explicit关键字的以普通指针为参数的构造函数,能将普通指针转换成智能指针,与此同时,它阻止了隐式转换的发生。

智能指针只能处理堆上分配的空间,其他的空间处理不了。如果你把一个非堆地址传给智能指针这是不合理的,如下图所示。



虽然不会报错,但是你会发现程序出现了异常行为。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. 什么是智能指针? 智能指针是行为类似于指针的类对象,但这种对象还有其他功能。 2. 为什么设计智能指针? 引...
    MinoyJet阅读 3,843评论 0 1
  • 原作者:Babu_Abdulsalam 本文翻译自CodeProject,转载请注明出处。 引入### Ooops...
    卡巴拉的树阅读 30,300评论 13 74
  • 导读## 最近在补看《C++ Primer Plus》第六版,这的确是本好书,其中关于智能指针的章节解析的非常清晰...
    小敏纸阅读 6,075评论 1 12
  • 1.auto_ptr,share_ptr概述 在开发过程中,曾经使用过两种C++的智能指针:auto_ptr和sh...
    哼我要大闹天宫了阅读 4,278评论 0 2
  • C++智能指针 原文链接:http://blog.csdn.net/xiaohu2022/article/deta...
    小白将阅读 11,811评论 2 21

友情链接更多精彩内容