当前位置: 首页 > news >正文

C++智能指针

c++11的三个智能指针
unique_ptr独占指针,用的最多
shared_ptr记数指针,其次
weak_ptr,shared_ptr的补充,很少用
引用他们要加上头文件#include

unique_ptr独占指针:
1.只能有一个智能指针管理内存
2.当指针超出作用域时,内存将自动释放
3.不可copy,只能move

三种创建方式
前两种用的是拷贝构造函数,第三种用的是赋值构造函数。
1.通过已有裸指针创建
class Cat;
{
Cat(string name = “miaomiao”){}
void cat_infor(){}
}

Cat* cat = new Cat;
unique_ptr u_cat(cat);
cat = NULL;//为了防止通过cat改动,将其置空,更好的体现独占。
2.通过new创建,RAII,获得资源之时就是初始化之时
unique_ptr u_cat(new Cat);
3.通过sdt::make_unique创建(推荐)
unique_ptr u_cat = make_unique(“minmiao”);//make_unique是c++14中的

unique_ptr u_cat = make_unique(new Cat);

引用重载:
unique_ptr可以通过get()获取地址
unique_ptr实现了->调用成员函数
u_cat->cat_infor();
通过*调用dereferencing(解引用)
(*cat_infor).cat_infor();

移动:
move

do_with_cat_pass_value(unique u_cat){}

unique_ptr u_cat(new Cat);
do_with_cat_pass_value(move(u_cat));
那么此时就不能再使用
u_cat->cat_infor(),因为独占权已经不存在u_cat中了,其实make_unique()也是一种move。

http://www.lryc.cn/news/3896.html

相关文章:

  • MongoDB--》MongoDB数据库以及可视化工具的安装与使用—保姆级教程
  • JAVA 基础题
  • Flutter desktop端多屏幕展示问题处理
  • 每天10个前端小知识 【Day 9】
  • Elasticsearch的读写搜索过程
  • 线上服务质量的问题该如何去处理?你有什么思路?
  • IOC 配置,依赖注入的三种方式
  • 自动机,即有限状态机
  • 第一部分:简单句——第一章:简单句的核心——二、简单句的核心变化(主语/宾语/表语的变化)
  • VSCode Markdown写作引入符合规范的参考文献
  • 电子学会2022年12月青少年软件编程(图形化)等级考试试卷(四级)答案解析
  • JUC并发编程学习笔记(一)——知识补充(Threadlocal和引用类型)
  • 2022级上岸浙理工MBA的复试经验提炼和备考建议
  • 人大金仓数据库索引的应用与日常运维
  • 20230211英语学习
  • 5G图书推荐
  • 【Linux下代码调试工具】gdb 的基本使用
  • UART和RS232、RS485的联系和区别、以及对软件编程的影响
  • ajax是什么?咋实现的
  • AI推理计算框架中的内存优化
  • C语言学习小结(1)——初认识C语言
  • 30分钟吃掉wandb可视化自动调参
  • 【8】AMBA_SOC项目自学IC验证项目-仿真平台脚本使用讲解
  • 智慧水务未来技术发展方向预测探讨
  • 数据结构 | 栈与队列
  • Redux 源码分析
  • 第五十二章 BFS进阶(二)——双向广搜
  • 业务建模题
  • 电子秤专用模拟数字(AD)转换器芯片HX711介绍
  • 微服务 RocketMQ-延时消息 消息过滤 管控台搜索问题