千家信息网

C++11智能指针shared_ptr怎么使用

发表于:2025-02-20 作者:千家信息网编辑
千家信息网最后更新 2025年02月20日,本篇内容介绍了"C++11智能指针shared_ptr怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2025年02月20日C++11智能指针shared_ptr怎么使用

本篇内容介绍了"C++11智能指针shared_ptr怎么使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

shared_prt的本身是一个类,所以它的初始化实际上就是调用shared_ptr类的构造函数。通过分析shared_ptr的构造函数,就可以准确把握shared_ptr初始化的方法。

default构造函数

函数原型:

constexpr shared_ptr() noexcept;

说明:

声明空shared_ptr

代码示例:

空指针构造

函数原型:

constexpr shared_ptr(nullptr_t);

说明:

通过空指针构造shared_ptr,动作default构造函数动作相同。

代码实例

由指针构造

函数原型:

explicit shared_ptr (U* p);

说明:

根据已有指针构造shared_ptr。

代码实例:

注意事项

实例中展示的两种方式都合法,但是在第二种情况中应该理解,一旦构造了share_ptr,就表明s指向的string对象的内存管理已经交给ps1管理而不应该在通过s访问了(至少是非常小心的访问)。

第二种方式应该尽量避免。

拷贝构造

函数原型:

shared_ptr (const shared_ptr& x) noexcept;

说明:

由一个已有的shared_ptr创建新的share_ptr。其间会自动维护应用计数。

代码示例:

程序输出:

拷贝构造函数执行以后,引用计数增加,两个指针指向同一个对象。

移动构造

函数原型:

shared_ptr (shared_ptr&& x) noexcept;

说明:

由一个已有的shared_ptr创建新的share_ptr。作为参数的shared_pt同时会释放对内存的管理权利,整个构造过程结束后,引用计数不变。

代码示例:

程序输出:

内存管理由ps转移到了ps1。

修饰符说明

explicit:保证该构造函数不会被隐式调用

noexcept:该函数不会抛出异常,

constexpr:该函数可以在编译期间求值

"C++11智能指针shared_ptr怎么使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

函数 指针 代码 原型 实例 示例 管理 输出 智能 内存 内容 动作 实际 对象 情况 拷贝 指向 方式 更多 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库查询要点 apex服务器不同步还无法重连 电厂网络安全制度规范 学生拍摄网络安全宣传视频 服务器批量架设 义乌软件开发公司名称 网络安全对国家的重要性政治角度 计算机软件开发的工作要求 mc服务器种子 服务器芯片虚拟化软件开发 网络技术团队追回钱 电脑软件开发过程 软件开发性能参考标准 手机查找设备显示无法连接服务器 安卓获取数据库链接报错 游戏服务器怎么上不了网 成都电脑软件开发服务费 宿舍数据库中应创建哪几个数据表 普陀区软件开发技术服务哪家好 上海营销软件开发销售价格 考研重庆网络安全好考吗 软件开发费用一小时多少钱 对网络安全的建议4条英语作文 前端软件软件开发 康海nc608串口服务器说明书 数据库删除表的某一行 广西广电网络技术员岗位 北京哪里有软件开发企业 交警系统违法数据库 泰安软件开发明堂路
0