条款5 对定制的"类型转换函数"保持警惕 条款6 区别increment/decrement操作符的前值和后置形式 条款7 千万不要重载&&,||,和,操作符 条款8 了解不同意义的 new 和 delete 条款5 对定制的"类型转换函数"保持警惕 1.C++有默认类型转换,如 int---char 2.单自变量constructors(能够以单一变量成功调用起constructor,起构造函数可以有多个参数但是除第一个参数外,其他参数必须有初省值…
条款16 谨记80-20法则 条款17 考虑使用 lazy evaluation(缓释评估) 条款18 分期摊还预期的计算成本 条款19 了解临时对象的来源 条款20 协助完成"返回值的优化"("RVO" return value optimization) 条款21 利用重载技术(overload)避免隐式类型转换(implicit type conversion) 条款22 考虑以操作符的复合形式(op=)取代其单独形式(op) 条款23 考虑使用其他库函数 条…
条款9 使用析构函数防止内存泄漏 条款10 在构造函数中防止内存泄漏 条款11 禁止异常信息传递到析构函数外 条款12 理解"抛出一个异常''与"传递一个参数"或调用一个函数的差别 条款13  以by reference的方式捕获异常 条款14 明智的运用 exception specifications 条款15 了解异常处理的成本 条款9 使用析构函数防止内存泄漏 1. void processAdoptions(istream& dataSource) { wh…
条款1:区别指针和引用 条款2:最好使用C++转换操作符 条款3: 绝对不要以多态的方式处理数组 条款4: 避免无用的缺省构造函数 条款1:区别指针和引用 1.指针(pointer) 使用[*/->] 引用(reference) 使用[.] 2.a.引用没有null b.引用必须初始化 c.引用不可以被重新赋值 3.引用比指针的效率更高(其实只是更安全),引用不需要判定是否为null 总结: 指向不变用引用 条款2:最好使用C++转换操作符 C的强制转换是一定会实现,但是并不保证强转后的结果是否…
一 要求对象产生在heap中 阻止对象产生产生在non-heap中最简单的方法是将其构造或析构函数声明在private下,用一个public的函数去调用起构造和析构函数 class UPNumber { public: UPNumber(); UPNumber(int initValue); UPNumber(double initValue); UPNumber(const UPNumber& rhs); // pseudo destructor,它是const menber function…
1.virtual constructor 在语法上是不可将构造函数声明成虚函数,虚函数用于实现"因类型而异的行为",也就是根据指针或引用所绑定对象的动态类型而调用不同实体.现在所涉及的 virtual-constructor实际上是"仿virtual-constructor. 假设你设计一个软件,用来处理新闻事件,它由文字和图形构成 class NLComponent { //用于 newsletter components public: // 的抽象基类 ... //包…
一 允许零个或一个对象 我们知道每当即将产生一个对象,我们有一个constructor被调用,那么我们现在想组织某个对象的产生,最简单的方法就是将其构造函数声明成private(这样做同事防止了这个类被继承) class PrintJob; class Printer { public: void submitJob(const PrintJob& job); void reset(); void performSelfTest(); ... friend Printer& thePrin…
在旧式转型(cast)下面隐藏着一些见不得人的.鬼鬼祟祟的东西.他们的语法形式使其在一段代码中通常很难引起人们的注意,但它们可能会搞一些可怕的破坏活动,就好比你冷不丁被一个恶棍猛击一拳似的.让我们阐明旧式转换的含义.显然,在最初的C语法中,在表达式中将类型加括号就是旧式转型: char * hopeItWorks = (char *)0x00ff000;//旧式转型 C++引入了另一种转型,即采用函数形式的转型语法来表达同样的意思: typedef char * pChar; hopeItWor…
条款5:了解C++默默编写并且调用了哪些函数 1.  构造函数,析构函数,拷贝赋值函数,拷贝构造函数. class Empty { public: //默认构造函数 Empty(){}; //拷贝构造函数 Empty(const Empty& rhs){} //析构函数 ~Empty(){} //拷贝赋值函数 Empty& operator=(const Empty& rhs){}; }; //默认构造函数 Empty e1; //拷贝构造函数 Empty e2(e1); //拷贝…
补充自己的. 转自:http://blog.csdn.net/ysu108/article/details/9853963#t0 Effective C++ 笔记 目录(?)[-] 第一章 从C转向C 条款1尽量用const和inline而不用define 条款2尽量用iostream而不用stdioh 条款3尽量用new和delete而不用malloc和free 条款4尽量使用c风格的注释 第二章 内存管理 条款5对应的new和delete要采用相同的形式 条款6析构函数里对指针成员调用del…