- 1、本文档共41页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
boost常用库的使用介的绍 第二讲
《boost常用库的使用介绍》 第二讲:boost智能指针库 主讲人:步磊峰 UIPower 3D界面引擎负责人 第一节: C++程序员对内存管理的苦恼 1、内存泄漏(memory leak) 2、野指针(wild pointer) 3、访问越界(access violation) boost的智能指针库就是内存管理的强劲解决方案 通过boost智能指针库,我们能够高效的进行内存管理,解决上述问题,同时彻底让你忘记栈(stack),堆(heap)等 内存相关的术语,并且还会发现,boost为c++提供的内存管理解决方案可能比java和c#等其他语言更好,更高效 ! * 第二节:智能指针与RAII机制 为了管理内存等资源,智能指针采用RAII机制(Resource Acquisition Is Initialization,资源获取既初始化) 1、 所有初始化操作移到对象的构造函数中 2、 所有的释放操作都放在对象的析构函数里。 3、 适当的异常处理代码来应付对象构造期间丢出的异常 这种用构造函数申请资源用析构函数释放资源的做法或者说技术通常被称为“资源获取即初始化”。这样做的优点是 而易见的:对象创建后,用户能开始正确使用对象,不用担心对象的有效性或者是否还要作进一步的初始化操作。 * 第三节:Boost智能指针的分类: boost 提供下列几种智能指针: * 第四节:shared_ptr简介 1、boost::shared_ptr 是一个最像指针的“智能指针”: 是boost.smart_ptr中最有价值,最重要,也是最有用的类,boost库的其他许多类库都使用了shared_ptr, 所以毫无悬念的被收入了c++11标准中去。 2、boost::shared_ptr实现了计数引用: 它包装了new操作符在堆上分配的动态对象,但它实现了引用计数,可以自由的拷贝和赋值, 在任意地方共享它。当引用计数为0时,它会自动删除被包装的动态分配的对象。 * 第四节:shared_ptr简介 3、boost::shared_ptr不需要手动的调用类似release方法: 它不像侵入式实现的智能指针一样需要手动的调用类似release方法,全部用由shared_ptr内部的计数器自动增减,这一点是非常有用的。(COM的IUnknow接口以及boost::intrusive_ptrT都是基于侵入式设计的智能指针,需要手动调用类似release方法) 4、boost::shared_ptr支持所有权转移: 并且可以安全的存储在stl标准容器中,是在stl容器存储指针的标准解法。例如std::vectorint* IntVec,使用shared_ptr方式为std::vectorboost::shared_ptrint IntptrVec. * 第五节:shared_ptr类摘要 1、 构造函数,拷贝构造函数,赋值操作符以及析构函数 Templateclass T Class shared_ptr { /*******************构造函数*******************************************/ shared_ptr(); //创建一个持有空指针的shared_ptr,use_count() = 0 get() == NULL //获得一个指向类型T的指针p的管理权,use_count == 1get() == p ,Y类型必须能够转换为T类型 templateclass Y explicit shared_ptr(Y* p); //作用同上,增加了一个构造参数D,是一个仿函数对象,代表删除器,该构造函数非常有用,后面会详解 templateclass Y, class D shared_ptr(Y* p, D d); /******************拷贝构造函数及赋值操作符重载***********************/ //调用拷贝构造函数或赋值操作后,引用计数加1 get() == r.get() use_count() == r.use_count() shared_ptr(shared_ptr const r); templateclass Y shared_ptr(shared_ptrY const r); shared_ptr operator=(
您可能关注的文档
- AutoCAD6零件的图与装配图的绘制.ppt
- AUTOCAD绘制减速器装配图的2016.ppt
- AT的N产品硬件介绍.ppt
- Autodesk AutoC的AD 2015初级工程师参考样题.pdf
- Au的toCAD基本知识.ppt
- Ar的tificial intelligence人工智能(口语课).pptx
- AWT的的层次关系.ppt
- Av的alon总线规范.ppt
- AutoCAD 的2009机械绘图教案.doc
- Axure的-RP产品经理入门到精通培训简易教程.pdf
- 区委书记、市国资委党委领导班子2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面检查材料【两篇文】.docx
- 局党组书记、市国资委党委领导班子2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面个人检查材料2篇文.docx
- 市交通运输局局长2025年专题生活会对照“四个带头”含落实意识形态工作责任制方面个人对照检查发言提纲与检察院领导班子“四个带头”检查材料【2篇文】.docx
- 市投资促进局党支部书记2025年组织生活会对照“四个带头”个人对照检查发言材料与党组书记“四个带头”个人对照检查材料(内蒙古地区四个对照,反面典型案例检视剖析)【2篇文】.docx
- 市教育局党委副书记、市国资委党委领导班子2025年“四个带头”个人对照检查发言材料(上年度整改+个人事项+典型事例剖析)2篇文.docx
- 2025年专题生活会“四个带头”方面对照检视材料(问题+原因+措施+意识形态)与纪检委员专题生活会“四个带头”方面个人对照检查材料【2篇文】.docx
- 检察院领导班子2025年专题生活会对照“四个带头”检查材料与县司法局专题生活会党组书记个人对照“四个带头”对照检查材料(含反面典型案例全面剖析)2篇文.docx
- 市机关事务局党支部书记、局党组书记2025年组织生活会对照“四个带头”含反面典型案例举一反三剖析方面个人发言材料、检查材料【2篇文】.docx
- 2025年领导干部专题生活会“四个带头”对照检查材料与市审计局领导班子专题生活会“四个带头”含反面典型案例剖析对照检查材料2篇文.docx
- 2025年县司法局专题民主生活会班子围绕“4个带头”对照检查材料与反面典型案例回顾与剖析对照检查发言材料2篇文.docx
最近下载
- 【地理】亚洲的人文环境 2024-2025学年七年级地理下册教学课件(人教版2024).pptx VIP
- 幼儿园后勤管理经验分享.pptx VIP
- 文献检索与科技论文写作 课件全套 第1--9章 绪论、科技文献检索基础知识---科技论文的投稿.pdf VIP
- 集团总部面向基层公开遴选工作人员实施方案.doc VIP
- 反力墙与反力台座加载孔加工和安装施工工法.pdf
- 部编版八年级下册道德与法治教学计划及进度表.pdf
- 开学安全(法治)第一课-小学生主题班会课件.pptx VIP
- 炎症性肠病的免疫治疗研究.pptx
- 老年护理中的感染控制与预防.pptx VIP
- 广西壮族自治区信息中心招聘考试题库2023.docx VIP
文档评论(0)