贝博app体育下载艾弗森-app下载首页
  • 贝博app体育下载艾弗森-app下载首页
  • 网站首页
  • 关于我们
    企业简介
    企业文化
    企业理念
  • 产品展示
    产品一类
    产品二类
    产品三类
    产品四类
  • 荣誉资质
  • 新闻资讯
  • 成功案例
  • 联系我们
  • 首页幻灯
主页 > 首页幻灯 >

C++ Boost 智能指针详解

发表时间:2022年06月01日浏览量:

本文摘要:if( p != 0) {tmp.px = p;tmp.pn = boost::detail::shared_count( r ); 运行效果 if( p != 0) {tmp.px = p;tmp.pn = boost::detail::shared_count( r ); 运行效果 通过源码分析 boost::intrusive_ptr无引用计数器利便外部挪用者自界说计数器使用。在其他地方和 boost::shared_ptr无差异。

贝博app体育下载艾弗森

if( p != 0) {tmp.px = p;tmp.pn = boost::detail::shared_count( r );

运行效果

if( p != 0) {tmp.px = p;tmp.pn = boost::detail::shared_count( r );

运行效果

通过源码分析 boost::intrusive_ptr无引用计数器利便外部挪用者自界说计数器使用。在其他地方和 boost::shared_ptr无差异。

http://theboostcpplibraries.com/

//重置工具voidresetBOOST_SP_NOEXCEPT { this_type.swap(* this); }

你知道RAII吗?

本文是博主曾经学习 智能指针 时总结的条记由于时间比力久远可能部门功效没有更详细的解说后续有时间会重新review继续完善。

贝博app体育下载艾弗森

指针 作为C/C++语言重要的特性之一在使用中很容易泛起疏忽释放内存的现象导致内存溢出。而博主之前接触的如C#、Java等高级语言险些不需要思量释放内存。

这对于那些放弃C/C++转投“高级”语言的同学而言是个庞大的捏词。可是C++厥后泛起了 智能指针 很大水平上弥补了这一繁琐的“短板”。

在使用中也有种更“高级”语言的感受。不管是什么语言只要学醒目效果都是差不多的只是在使用上“仁者见仁智者见智”而已。希望当初下决议学习C/C++的你我不忘初心继续走好这条“无聊又刺激”的编程之路。

~intrusive_ptr{if( px != 0) intrusive_ptr_release( px ); }

当函数需要一个由共享指针所治理的工具而这个工具的生存期又不依赖于这个函数时就可以使用弱指针。只要法式中另有一个共享指针掌管着这个工具函数就可以使用该工具。

如果共享指针复位了就算函数里能获得一个共享指针工具也不存在了。以下示例使用boost官方提供的示例说明弱指针的使用。

public:

贝博app体育下载艾弗森

学习过C/C++的同学都知道有一个很是利便又特别让人烦的数据类型那就是指针不仅操作贫苦另有种种“级别”一级指针、二级指针、n级别指针…许多人从入门到放弃C/C++很大一个原因是因为搞不清楚指针、以及指针与其他工具之间千丝万缕的关系。而在实际的开发历程中经常会泛起因为未释放申请的工具而导致内存溢出、法式奔溃。

这里就包罗指针工具的释放那如果有一种指针能申请工具后“自动”释放是不是很爽?本文将先容Boost中提到的种种智能指针。

// 有参结构函数只能使用shared_ptr和weak_ptr初始化template< classY> weak_ptr(shared_ptr<Y> const& r, element_type * p) BOOST_SP_NOEXCEPT: px( p ), pn( r.pn ) {}

classPerson{public: Person( std:: stringname, intage) :name(name), age(age){ cout<< "Person 的结构函数"<< endl; }

// 引用计数器爽long use_count constBOOST_SP_NOEXCEPT {returnpn.use_count; } private: element_type * px; // contained pointerboost::detail::weak_count pn; // reference counter

通过先容Boost C++ 库的种种智能指针之后我们应该能够编写宁静的代码来使用动态分配的工具和数组。

如果需要将智能工具存储在容器中下面代码段可以直接实现。

template< classT> classscoped_ptr // noncopyable{private:

if( tmp != 0) {pn = boost::detail::shared_count( r );boost::detail::sp_deleter_c。


本文关键词:贝博app体育下载艾弗森,C++,Boost,智能,指针,详解,tmp.px,tmp.pn,boost,detail

本文来源:贝博app体育下载艾弗森-www.nhzytg.com

上一篇: 心酸!柳州七旬老人家中离世无人知晓 被发现时全身赤裸 下一篇:没有了
贝博app体育下载艾弗森-app下载首页

贝博app体育下载艾弗森-app下载首页

  • 河北省廊坊市宜章县工预大楼8269号
  • 030-29483942
  • admin@nhzytg.com
手机:12633913960

关于我们

  • 企业简介
  • 企业文化
  • 企业理念

产品展示

  • 产品一类
  • 产品二类
  • 产品三类
  • 产品四类

新闻资讯

联系我们

Copyright © 2002-2022 nhzytg.com. 贝博app体育下载艾弗森科技 版权所有 备案号:ICP备45012795号-6
友情链接: 百度 搜狗 好搜