使用exception specifications你必须非常仔细去确保,函数调用的子函数.注册的回调函数不会违背约定.而设计模板内部的异常更难确保. 设计回调机制的时候,如果调用方规定了不抛出异常,就必须确保注册进来的函数均不会抛出异常,书上给出了这样的做法: typedef void(*CallBackPtr)( int eventXLocation, int eventYLocation, void *dataToPassBack ) throw(); 并以CallBackPtr类型注册函…
1 析构函数绝对不要吐出异常.如果一个析构函数可能调用产生异常的函数,析构函数应该不传播该异常或结束程序 2 如果客户需要对某个操作函数运行期间抛出的异常做出反应,那么class应该提供一个普通函数执行该操作. 3 产生两个以上的异常会导致程序关闭或者不确定行为…
这事篇读书笔记,只记录自己的理解和总结,一般情况不对其举例子具体说明,因为那正是书本身做的事情,我的笔记作为梳理和复习之用,划重点.我推荐学C++的人都好好读一遍Effective C++ 系列,真是好书啊,对于学完C++ 基础知识的人,这是本高阶秘籍. 笔记 条款 9 - 15 关注的主题是异常.关注1.异常可能引起的资源泄露(强烈推荐使用智能指针)2.异常是如何抛出的和3.异常的成本.目的是写出 exception-safe 的程序. 条款9: 利用 destructor避免资源泄露. 这个…
More Effective C++ #@author: gr #@date: 2015-05-24 #@email: forgerui@gmail.com 九.利用destructors避免泄漏资源 所谓RAII即"资源获取即是初始化的时候",所以就必须对资源进行释放.以一个对象存放资源,并依赖对象的析构函数释放资源. 把资源封装到对象体内,这样在发生异常时,对象析构时调用析构函数,释放资源,可以避免资源泄漏. 如果异常是在资源获取过程中抛出的,查看第十条:如果异常是在析构过程中发生…
百度云及其他网盘下载地址:点我 编辑推荐 <More Effective C++:35个改善编程与设计的有效方法(中文版)>:传世经典书丛 媒体推荐 <Effective c++>(Scott Meyers第一本书)的荣耀:“对于任何渴望在中阶或高阶层面精通c++的人,我慎重推荐<Effective c++>,” ——(The C/C++User's Journal) 作者简介 作者:(美国)梅耶(Scott Meyers) 译者:侯捷 Scott Meyers,世界顶…
一.基础议题(basics) 条款1:仔细区别 pointers 和 references(Distinguish between pointers and references) 一个基本的语法问题. 条款2:最好使用 C++ 类型转换运算符(Prefer C++-style casts) C++的类型转换运算符安全,容易解析,分工精细,虽然要打多点字. 条款3:绝对不要以 polymorphically(多态)方式來处理数组(Never treat arrays polymorphicall…
三.异常 条款9:利用destructor避免泄露资源 把资源封装在对象内,通常可以在exception出现时避免资源泄露 条款10:在构造函数内阻止资源泄露 C++仅仅能删除被完全构造的对象(fully constructed objects),只有一个对象的构造函数完全运行完毕,这个对象才被完全地构造.C++拒绝为没有完成构造操作的对象调用析构函数. 在构造函数中可以使用try catch throw捕获所有的异常.更好的解决方法是通过智能指针的方式. 如果你用对应的std::unique_…
出自:https://github.com/huihut/interview Github    |    Docsify 简体中文    |    English 关于 本仓库是面向 C/C++ 技术方向校招求职者.初学者的基础知识总结,包括语言.程序库.数据结构.算法.系统.网络.链接装载库等知识及面试经验.招聘.内推等信息. 侧边目录支持方式:Docsify 文档.Github + TOC 导航(TOC预览.png) 保存为 PDF 方式:使用 Chrome 浏览器打开 Docsify 文…
Effective C++ 视C++ 为一个语言联邦(C.Object-Oriented C++.Template C++.STL) 宁可以编译器替换预处理器(尽量以const.enum.inline替换#define) 尽可能使用const 确定对象被使用前已先被初始化(构造时赋值(copy 构造函数)比default 构造后赋值(copy assignment)效率高) 了解C++ 默默编写并调用哪些函数(编译器暗自为class 创建default 构造函数.copy 构造函数.copy a…
第一部分 让自己习惯C++ 条款01:视C++为一个语言联邦 一.要点 ■ c++高效编程守则视状况而变化,取决于你使用c++的哪一部分. 二.扩展 将c++视为一个由相关语言组成的联邦而非单一语言会帮助你更好的理解,其由c.object-oriented c++.template c++和stl四部分组成. 条款02:尽量以const,enum,inline替换#defines 一.要点 ■ 对于单纯变量,最好以const对象或enums替换#defines. ■ 对于形似函数的宏,最好改用i…