C++|44.智能指针

智能指针

在这里插入图片描述
通常的指针是需要特殊地去申请对应的空间,并在不使用的时候还需要人工去销毁。
而智能指针相对普通的指针将申请和销毁封装到整个指针内部,于是就不用特地去人为的申请和销毁。

unique_ptr

特点一——无法进行复制

在这里插入图片描述
原因可以通过查看智能指针的源码得到。
在这里插入图片描述
由上图观察得到,智能指针的源码删除了智能的构造函数和赋值运算(的重载),所以没办法对智能指针进行复制。
这样做也是为了避免错误。当智能指针离开作用域后,将自行进行销毁,如果说智能指针真能复制的话,那么全部复制了的智能指针也会销毁,但已经销毁了,就没有必要再有销毁这个功能了。

shared_ptr

特点一——可复制

在这里插入图片描述
使用shared_ptr的话,是可以将其进行复制的。
这点是不同于unique_ptr的。

特点二——计数器(用于确定删除的时机)

每一个shared_ptr都会指向同一个事物,从而会绑定上一个计数器。
当增添一个shared_ptr/引用,计数器就会加一。
而删除一个shared_ptr/引用,计数器就会减一。
特别的,当计数器减为0时,整个事物才会进行删除。

其他

智能指针并不是能去代替全部的new()delete()
它只是说如果当前场景是懒得去人工删/不需要人工删的情况,可以考虑使用智能指针。
并且优先使用unique_ptr,因为其占用的内存小。

相关推荐

  1. C++ 智能指针

    2024-01-13 05:44:03       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-13 05:44:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-13 05:44:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-13 05:44:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-13 05:44:03       20 阅读

热门阅读

  1. leetCode 128.最长连续序列

    2024-01-13 05:44:03       37 阅读
  2. leetcode-对称二叉树

    2024-01-13 05:44:03       35 阅读
  3. 达梦数据库主备集群

    2024-01-13 05:44:03       32 阅读
  4. python sqlserver 数据表转储和恢复

    2024-01-13 05:44:03       38 阅读
  5. 如何创建和管理分支?

    2024-01-13 05:44:03       38 阅读
  6. Linux计划任务管理

    2024-01-13 05:44:03       39 阅读
  7. sqoop的安装与使用

    2024-01-13 05:44:03       23 阅读