MoreEffectiveC++Item35(异常)(条款9-15)】的更多相关文章

条款9 使用析构函数防止内存泄漏 条款10 在构造函数中防止内存泄漏 条款11 禁止异常信息传递到析构函数外 条款12 理解"抛出一个异常''与"传递一个参数"或调用一个函数的差别 条款13  以by reference的方式捕获异常 条款14 明智的运用 exception specifications 条款15 了解异常处理的成本 条款9 使用析构函数防止内存泄漏 1. void processAdoptions(istream& dataSource) { wh…
条款16 谨记80-20法则 条款17 考虑使用 lazy evaluation(缓释评估) 条款18 分期摊还预期的计算成本 条款19 了解临时对象的来源 条款20 协助完成"返回值的优化"("RVO" return value optimization) 条款21 利用重载技术(overload)避免隐式类型转换(implicit type conversion) 条款22 考虑以操作符的复合形式(op=)取代其单独形式(op) 条款23 考虑使用其他库函数 条…
条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款8 了解不同意义的 new 和 delete 条款5 对定制的"类型转换函数"保持警惕 1.C++有默认类型转换,如 int---char 2.单自变量constructors(能够以单一变量成功调用起constructor,起构造函数可以有多个参数但是除第一个参数外,其他参数必须有初省值…
一 要求对象产生在heap中 阻止对象产生产生在non-heap中最简单的方法是将其构造或析构函数声明在private下,用一个public的函数去调用起构造和析构函数 class UPNumber { public: UPNumber(); UPNumber(int initValue); UPNumber(double initValue); UPNumber(const UPNumber& rhs); // pseudo destructor,它是const menber function…
一 允许零个或一个对象 我们知道每当即将产生一个对象,我们有一个constructor被调用,那么我们现在想组织某个对象的产生,最简单的方法就是将其构造函数声明成private(这样做同事防止了这个类被继承) class PrintJob; class Printer { public: void submitJob(const PrintJob& job); void reset(); void performSelfTest(); ... friend Printer& thePrin…
条款1:区别指针和引用 条款2:最好使用C++转换操作符 条款3: 绝对不要以多态的方式处理数组 条款4: 避免无用的缺省构造函数 条款1:区别指针和引用 1.指针(pointer) 使用[*/->] 引用(reference) 使用[.] 2.a.引用没有null b.引用必须初始化 c.引用不可以被重新赋值 3.引用比指针的效率更高(其实只是更安全),引用不需要判定是否为null 总结: 指向不变用引用 条款2:最好使用C++转换操作符 C的强制转换是一定会实现,但是并不保证强转后的结果是否…
1.virtual constructor 在语法上是不可将构造函数声明成虚函数,虚函数用于实现"因类型而异的行为",也就是根据指针或引用所绑定对象的动态类型而调用不同实体.现在所涉及的 virtual-constructor实际上是"仿virtual-constructor. 假设你设计一个软件,用来处理新闻事件,它由文字和图形构成 class NLComponent { //用于 newsletter components public: // 的抽象基类 ... //包…
这事篇读书笔记,只记录自己的理解和总结,一般情况不对其举例子具体说明,因为那正是书本身做的事情,我的笔记作为梳理和复习之用,划重点.我推荐学C++的人都好好读一遍Effective C++ 系列,真是好书啊,对于学完C++ 基础知识的人,这是本高阶秘籍. 笔记 条款 9 - 15 关注的主题是异常.关注1.异常可能引起的资源泄露(强烈推荐使用智能指针)2.异常是如何抛出的和3.异常的成本.目的是写出 exception-safe 的程序. 条款9: 利用 destructor避免资源泄露. 这个…
一.概述异常分成三大类:预定义异常.非预定义异常.自定义异常处理方法分为:直接抛出异常.内部块处理异常.游标处理异常 预定义异常:由PL/SQL定义的异常.由于它们已在standard包中预定义了,因此,这些预定义异常可以直接在程序中使用,而不必再定义部分声明. 非预定义异常:用于处理预定义异常所不能处理的Oracle错误. 自定义异常:用户自定义的异常,需要在定义部分声明后才能在可执行部分使用.用户自定义异常对应的错误不一定是Oracle错误,例如它可能是一个数据错误. 三种异常中,预定义与非…
15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8  使用多元高斯分布进行异常检测(可选) 15.1  问题的动机 15.2  高斯分布 15.3  算法 15.4  开发和评价一个异常检测系统 15.5  异常检测与监督学习对比 15.6  选择特征 15.7  多元高斯分布(可选) 15.8 使用多元高斯分布进行异常检测(可选)…