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

w3c网站代码标准规范济南市新增风险点信息公布

w3c网站代码标准规范,济南市新增风险点信息公布,黑龙江建设安全监督网查询,电子商务网站开发与实现弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手#xff0c;它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 -#xff0c;因为它不共享指针#xff0c;不能操作资源#xff0c;所以它的构造不会增加引用计数#xff0c;析构也不会减…弱引用智能指针 std::weak_ptr 可以看做是 shared_ptr 的助手它不管理 shared_ptr 内部的指针。std::weak_ptr 没有重载操作符 * 和 -因为它不共享指针不能操作资源所以它的构造不会增加引用计数析构也不会减少引用计数它的主要作用就是作为一个旁观者监视 shared_ptr 中管理的资源是否存在。 1.初始化 // 默认构造函数 constexpr weak_ptr() noexcept; // 拷贝构造 weak_ptr (const weak_ptr x) noexcept; template class U weak_ptr (const weak_ptrU x) noexcept; // 通过shared_ptr对象构造 template class U weak_ptr (const shared_ptrU x) noexcept;/*作者: 苏丙榅 链接: https://subingwen.cn/cpp/weak_ptr/#1-%E5%9F%BA%E6%9C%AC%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95 来源: 爱编程的大丙*/在 C11 中weak_ptr 的初始化可以通过以上提供的构造函数来完成初始化具体使用方法如下 #include iostream #include memory using namespace std;int main() {shared_ptrint sp(new int);weak_ptrint wp1;weak_ptrint wp2(wp1);weak_ptrint wp3(sp);weak_ptrint wp4;wp4 sp;weak_ptrint wp5;wp5 wp3;return 0; }/*作者: 苏丙榅 链接: https://subingwen.cn/cpp/weak_ptr/#1-1-%E5%88%9D%E5%A7%8B%E5%8C%96 来源: 爱编程的大丙*/weak_ptr wp1; 构造了一个空 weak_ptr 对象 weak_ptr wp2(wp1); 通过一个空 weak_ptr 对象构造了另一个空 weak_ptr 对象 weak_ptr wp3(sp); 通过一个 shared_ptr 对象构造了一个可用的 weak_ptr 实例对象 wp4 sp; 通过一个 shared_ptr 对象构造了一个可用的 weak_ptr 实例对象这是一个隐式类型转换 wp5 wp3; 通过一个 weak_ptr 对象构造了一个可用的 weak_ptr 实例对象 其他常用方法 use_count() 通过调用 std::weak_ptr 类提供的 use_count() 方法可以获得当前所观测资源的引用计数函数原型如下 // 函数返回所监测的资源的引用计数 long int use_count() const noexcept;修改一下上面的测试程序添加打印资源引用计数的代码 #include iostream #include memory using namespace std;int main() {shared_ptrint sp(new int);weak_ptrint wp1;weak_ptrint wp2(wp1);weak_ptrint wp3(sp);weak_ptrint wp4;wp4 sp;weak_ptrint wp5;wp5 wp3;cout use_count: endl;cout wp1: wp1.use_count() endl;cout wp2: wp2.use_count() endl;cout wp3: wp3.use_count() endl;cout wp4: wp4.use_count() endl;cout wp5: wp5.use_count() endl;return 0; }测试程序输出的结果为: 通过打印的结果可以知道虽然弱引用智能指针 wp3、wp4、wp5 监测的资源是同一个但是它的引用计数并没有发生任何的变化也进一步证明了 weak_ptr只是监测资源并不管理资源。 expired() 通过调用 std::weak_ptr 类提供的 expired() 方法来判断观测的资源是否已经被释放函数原型如下 // 返回true表示资源已经被释放, 返回false表示资源没有被释放 bool expired() const noexcept;函数的使用方法如下: #include iostream #include memory using namespace std;int main() {shared_ptrint shared(new int(10));weak_ptrint weak(shared);cout 1. weak (weak.expired() ? is : is not) expired endl;shared.reset();cout 2. weak (weak.expired() ? is : is not) expired endl;return 0; }测试代码输出的结果: weak_ptr 监测的就是 shared_ptr 管理的资源当共享智能指针调用 shared.reset(); 之后管理的资源被释放因此 weak.expired() 函数的结果返回 true表示监测的资源已经不存在了。 lock() 通过调用 std::weak_ptr 类提供的 lock() 方法来获取管理所监测资源的 shared_ptr 对象函数原型如下 shared_ptrelement_type lock() const noexcept;函数的使用方法如下: #include iostream #include memory using namespace std;int main() {shared_ptrint sp1, sp2;weak_ptrint wp;sp1 std::make_sharedint(520);wp sp1;sp2 wp.lock();cout use_count: wp.use_count() endl;sp1.reset();cout use_count: wp.use_count() endl;sp1 wp.lock();cout use_count: wp.use_count() endl;cout *sp1: *sp1 endl;cout *sp2: *sp2 endl;return 0; }测试代码输出的结果为: sp2 wp.lock(); 通过调用 lock() 方法得到一个用于管理 weak_ptr 对象所监测的资源的共享智能指针对象使用这个对象初始化 sp2此时所监测资源的引用计数为 2 sp1.reset(); 共享智能指针 sp1 被重置weak_ptr 对象所监测的资源的引用计数减 1 sp1 wp.lock();sp1 重新被初始化并且管理的还是 weak_ptr 对象所监测的资源因此引用计数加 1 共享智能指针对象 sp1 和 sp2 管理的是同一块内存因此最终打印的内存中的结果是相同的都是 520 reset() 通过调用 std::weak_ptr 类提供的 reset() 方法来清空对象使其不监测任何资源函数原型如下 void reset() noexcept;函数的使用是非常简单的示例代码如下#include iostream #include memory using namespace std;int main() {shared_ptrint sp(new int(10));weak_ptrint wp(sp);cout 1. wp (wp.expired() ? is : is not) expired endl;wp.reset();cout 2. wp (wp.expired() ? is : is not) expired endl;return 0; } 测试代码输出的结果为: weak_ptr 对象 sp 被重置之后 wp.reset(); 变成了空对象不再监测任何资源因此 wp.expired() 返回 true 转载链接: https://subingwen.cn/cpp/weak_ptr/#1-2-4-reset
http://www.pierceye.com/news/925858/

相关文章:

  • 一站式网站建设与运营wordpress后台代码修改
  • 企业品牌类网站有哪些做网站建设的公司是什么类型
  • 自己制作的网站怎么做分页2022建站市场
  • 网贷审核网站怎么做wordpress 文章列表页
  • 搬家网站建设公司西安是哪个省市
  • php 网站 整合 数据库智能建站系统个人网站
  • 福田区罗湖区宝安区龙华区seo上首页排名
  • 网站建设业务员提成企业网站 需求
  • 做淘宝客网站 首选霍常亮国外网页设计
  • 天津小型企业网站设计方案网页升级访问每天自动更新 下载
  • 好的学习网站打广告壹搜网站建设优化排名
  • 响应式设计 手机网站手机自己制作app软件
  • 东方头条网站源码杭州正晖建设工程有限公司网站
  • 阿里巴巴网站建设与维护深圳民治网站建设
  • 郑州短视频代运营seo外链是什么
  • 网站建设公司 经营资质wordpress文学
  • 手机网站建设请示常州建设网站公司哪家好
  • 网站开发报价ppt重庆沙坪坝有哪些大学
  • 牛商网做的包装盒网站怎么在门户网站上发布
  • 北京网络公司建站成品app直播源码下载
  • 帮忙建站的公司百度收录好的网站排名
  • 芯火信息做网站怎么样郑州网站建设老牌公司
  • 龙华营销型网站建设在线生成短链接网址
  • 深圳做公司网站关键词规划师工具
  • 长春市建设信息网站sem代运营推广公司
  • 宜昌网站建设平台有经验的盐城网站开发
  • wordpress 众筹网站模板wordpress首页只显示一篇文章
  • 嘉兴seo网站推广网页设计与制作课程结构
  • 江苏 网站 备案百度站长之家工具
  • 新加坡 网站建设专业简历制作网站有哪些