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

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

创新互联公司公司2013年成立,先为银州等服务建站,银州等地企业,进行企业商务咨询服务。为银州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

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

default构造函数

函数原型:

constexpr shared_ptr() noexcept;

说明:

声明空shared_ptr

代码示例:

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

由空指针构造

函数原型:

constexpr shared_ptr(nullptr_t);

说明:

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

代码实例

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

由指针构造

函数原型:

explicit shared_ptr (U* p);

说明:

根据已有指针构造shared_ptr。

代码实例:

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

注意事项

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

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

拷贝构造

函数原型:

shared_ptr (const shared_ptr& x) noexcept;

说明:

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

代码示例:

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

程序输出:

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

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

移动构造

函数原型:

shared_ptr (shared_ptr&& x) noexcept;

说明:

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

代码示例:

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

程序输出:

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

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

修饰符说明

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

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

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

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


本文标题:C++11智能指针shared_ptr怎么使用
文章源于:http://bzwzjz.com/article/jjeicc.html

其他资讯

Copyright © 2007-2020 广东宝晨空调科技有限公司 All Rights Reserved 粤ICP备2022107769号
友情链接: 重庆企业网站建设 成都商城网站制作 自适应网站建设 外贸网站设计方案 重庆手机网站建设 营销型网站建设 成都品牌网站建设 温江网站设计 重庆网站设计 达州网站设计 成都定制网站建设 网站设计 成都商城网站建设 成都网站建设 成都网站设计 成都网站设计 成都网站建设 自适应网站设计 成都网站建设 成都响应式网站建设 成都网站制作 成都网站建设推广