网站大量收购独家精品文档,联系QQ:2885784924

C++资源管理.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C资源管理

C++资源管理/Program/cp/201305/135536.shtmlC++的复杂是一个基本事实,这也成了很多人对C++横加指责的原因。事实上,正如陈皓在“C++的数组不支持多态”?这篇文章中提到的,很多人在并不真正了解C++的情况下,就喜欢得出这样的结论。更有甚者,把C语言本身的“坑”也归结为C++的问题。这样的人着实不少,C++11作为最具争议的语言之一,每一次讨论到涉及语言选择的时候,都会引起一场“血战”,但结果往往不了了之,喜欢C++的继续坚守C++阵营,讨厌C++的把精力留到下次黑C++的时候。对于客观公正批评C++的,我内心尊敬佩服;而对于还没搞清楚C++就信口开河的,我表示鄙视。任何一门语言都有自己的历史背景和定位,C++被/cpro/ui/uijs.php?rs=1u=http%3A%2F%2Fwww%2Eth7%2Ecn%2FProgram%2Fcp%2F201305%2F135536%2Eshtmlp=baiduc=newsn=10t=tpclicked3_hcq=smileking_cprk=%C9%E8%BC%C6k0=%C9%E8%BC%C6k1=%B1%E0%D2%EB%C6%F7k2=javaeek3=%C3%E6%CF%F2%B6%D4%CF%F3k4=jvmk5=cppsid=48b73d236d1a2491ch=0tu=u1682280jk=47c7ea1a0dbf28a4cf=29fv=14stid=9urlid=0luki=5seller_id=1di=128设计成这样,从历史上来看,是为了兼容C,使得C程序可以不用修改就可以继续使用;从定位上看,就是三大约束:与C的完全兼容、静态类型检查、最高性能。我真心的希望,如果有人不喜欢C++,在搞懂它之后再黑,免得误人子弟。每次写C++的优点之前,都想好好发泄一下,好了,言归正传。这篇文章想探讨下C++中的资源管理,谈到资源管理,就不得不谈异常安全,正是因为有了异常,才使得资源管理变得更加重要。C++11提供了一套非常好的/cpro/ui/uijs.php?rs=1u=http%3A%2F%2Fwww%2Eth7%2Ecn%2FProgram%2Fcp%2F201305%2F135536%2Eshtmlp=baiduc=newsn=10t=tpclicked3_hcq=smileking_cprk=%B1%E0%B3%CCk0=%B1%E0%B3%CCk1=%C9%E8%BC%C6k2=%B1%E0%D2%EB%C6%F7k3=javaeek4=%C3%E6%CF%F2%B6%D4%CF%F3k5=jvmsid=48b73d236d1a2491ch=0tu=u1682280jk=47c7ea1a0dbf28a4cf=29fv=14stid=9urlid=0luki=4seller_id=1di=128编程Idom来处理这个问题,C++11的新特性使得这些Idom变得更加易用。计算机中的资源是个非常广泛的概念,内存、锁、文件、Socket等等都是资源,C++中可以通过统一的方式管理这些资源,即RAII(参见The C++ Programming Lauguage, Special Edition, p364, 14.4节)。其基本思路非常简单,用类来封装资源,在类的构造函数中获取资源,在类的析构函数中释放资源。使用的时候,把这个类在栈上面实例化出一个对象,当这个对象超出作用域时,这个对象的析构函数会被调用,从而释放资源。正是这个简单的方式,构成了C++资源管理的基础,并且这样的方式是异常安全的,因为:1、如果在对象构造之前发生异常,则资源还没申请,不会有问题;2、如果在类的构造函数中发生异常,C++编译器保证资源不会发生资源泄漏(参见Exceptional C++, p26, Item8);3、在对象构造好之后发生了异常,stack unwinding(参见The C++ Programming Lauguage, Special Edition, p355, 14.1节)的过程中,C++标准要求/cpro/ui/uijs.php?rs=1u=http%3A%2F%2Fwww%2Eth7%2Ecn%2FProgram%2Fcp%2F201305%2F135536%2Eshtmlp=baiduc=newsn=10t=tpclicked3_hcq=smileking_cprk=%B1%E0%D2%EB%C6%F7k0=%B1%E0%D2%EB%C6%F7k1=javaeek2=%C3%E6%CF%F2%B6%D4%CF%F3k3=jvmk4=cppk5=c%2B%2Bsid=48b73d236d1a2491ch=0tu=u1682280jk=4

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档