异常安全的两个条件:
<!--[if !supportLists]-->1、
<!--[endif]-->不泄露任何资源。
<!--[if !supportLists]-->2、
<!--[endif]-->不允许数据败坏。
对fopen函数进行封装。
异常安全函数提供下面的三个异常保证之一:
<!--[if !supportLists]-->1、
<!--[endif]-->基本承诺:如果异常被抛出,程序内的任何事物仍然保持在有效的状态下。没有任何对象或数据结构会因此而败坏,所有对象都处于一种内部前后一致的状态。
<!--[if !supportLists]-->2、
<!--[endif]-->强烈保证:如果异常被抛出,程序状态不改变。调用这样的函数需要有这样的认知:如果成功,则全部成功,如果失败,则全部失败。
<!--[if !supportLists]-->3、
<!--[endif]-->不抛出异常:承诺不抛出异常,因为他们总是能够完成他们之前承诺的功能。
不要为了表示某件事情发生而改变对象状态,触发那件事情真的发生了。
使用copy and
swap原则保证强烈保证:为你打算修改对象(原件)做出一个副本,然后在副本上进行修改。如果抛出异常,源对象仍保持未改变状态。如果未抛出异常,则将修改后的副本和原对象在一个不抛出异常的操作中置换。
请记住:
<!--[if !supportLists]-->1、
<!--[endif]-->异常安全函数及时发生异常也不允许泄露资源或运行数据结构败坏。这种函数区分为三种可能的保证:基本型,强烈型,不抛出异常型。
<!--[if !supportLists]-->2、
<!--[endif]-->“强烈保证”往往能够以“copy-and-swap”来实现,但强烈保证并非对所有函数都可实现或具备现实意义。
<!--[if !supportLists]-->3、
<!--[endif]-->函数提供异常安全保证通常只等于其所调用之各个函数的异常安全保证中的最弱者。
分享到:
相关推荐
C++学习书籍——effective c++ 3rd(中英文)
Effective C++学习笔记 没有时间看Effictive C++书的人可以看看这个笔记 总结出了重点啊 适合有c++基础的人阅读
effective c++读书笔记和总结 effective c++读书笔记和总结
《Effective Modern C++:改善C++11和C++14的42个具体做法(影印版)(英文版)》中包括以下主题:剖析花括号初始化、noexcept规范、完美转发、智能指针make函数的优缺点;讲解std∷move,std∷forward,rvalue引用和全局...
自己整理的侯捷版本<<Effective C++ 改善程序与设计的55个具体做法>> 学习笔记.
effective C++读书笔记,effective C++读书笔记,effective C++读书笔记
effective C++ 很好 很不错 最好的C++进阶资料
摘录了《Effective C++》 (Scott Meyers 著)中有参考价值的编写代码建议,方面阅读
Effective C++跟more Effective c++
电子版的effective c++ 和more effective c++ c++四书五经中介绍的经典书籍
effective c++ & more effective c++ 纯文字版
中文版 chm Effective C++ More effective C++
内容简介:有人说C++程序员可以分为两类,读过Effective C++的和没读过的。当您读过《Effective C++:改善程序与设计的55个具体做法(第3版)(中文版)(双色)》之后,就获得了迅速提升自己C++功力的一个契机。
对于 C++ ——一种以拥有非同寻常的能力范围和表现力而自豪的语言——更是尤其如此。如果能正确使用,与 C++ 共事是一件令人快乐的事情。极多样的设计样式被直接表达并有效实现。对于 classes(类),functions...
Effective C++ & More Effective C++.chm
作者简介 作者:(美国)迈耶斯(Scott Meyers) 迈耶斯(Scott Meyers),二十多年来,Scott Meyers的Effective C++系列书籍(包括《Effective C++》《More Effective C++》和《Effective STL》)为C++编程语言...
effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective c++ word版 effective ...
Effective c++.pdf Effective c++.pdf