智能指针unique_ptr的用法
2024-10-15 06:56:25
unique_ptr是独占型的智能指针,它不允许其他的智能指针共享其内部的指针,不允许通过赋值将一个unique_ptr赋值给另一个unique_ptr,如下面错误用法:
std::unique_ptr<T> myPtr(new T);
std::unique_ptr<T> myOtherPtr = myPtr; // error
但是unique_ptr允许通过函数返回给其他的unique_ptr,还可以通过std::move来转移到其他的unique_ptr,注意,这时它本身就不再拥有原来指针的所有权了。相比于auto_ptr而言,unique_ptr是显示的转移,而不是莫名其妙的报废,因为auto_ptr调用拷贝构造函数后,原来的对象就失效了。
std::unique_ptr<T> myPtr(new T);
std::unique_ptr<T> myOtherPtr = std::move(myPtr); // ok
对于一般的程序使用std::unique_ptr就够了,如果是多线程方面,可能存在共同使用的问题,可以使用std::shared_ptr,注意不要引起循环引用。
最新文章
- java中关键字volatile的作用
- OpenSessionInView模式
- 自己写一个swap函数交换任意两个相同类型元素的值 对空指针的使用 字节大小的判断(二)了解原理
- 体验最火的敏捷——SCRUM(厦门,2014.1.4)
- DB天气app冲刺二阶段第十一天(完结)
- python写的自动签到脚本。
- MySQL 大DML操作建议
- java学习笔记day03
- avalon前端js直接通过ajax请求传一个对象到后台
- 【Python】 字符串的相关小知识点
- Javascript深入之创建对象的多种方式以及优缺点
- php编程 之 php基础二
- $Django 路飞之小知识回顾,Vue之样式element-ui,Vue绑定图片--mounted页面挂载--路由携带参数
- C#在WinForm下使用HttpWebRequest上传文件
- Windows Azure Virtual Network (13) 跨数据中心之间的虚拟网络点对点连接VNet Peering
- 深入浅出的webpack构建工具---PostCss(五)
- 强制禁用gitlab的双因子认证:Two-Factor Authentication
- 014-通过JDB调试,通过HSDB来查看HotSpot VM的运行时数据
- Python记录_day21 模块
- VSTO:使用C#开发Excel、Word【5】