条款26:限制某个类所能产生的对象数量(下) 允许对象来去自由 我们知道如何设计只允许建立一个实例的类,我们知道跟踪特定类的对象数量的工作是复杂的,因为在三种不同的环境中都可能调用对象的构造
条款26:限制某个类所能产生的对象数量(上) 你很痴迷于对象,但是有时你又想束缚住你的疯狂。例如你在系统中只有一台打印机,所以你想用某种方式把打印机对象数目限定为一个。或者你仅仅取得16个可分发出
条款24:理解虚拟函数、多继承、虚基类和RTTI所需的代价 此文包含一些图片,无法贴到文档区,所以我把word文档压成zip文件放在了文件交流区,请下载阅读, C++编译器们必须实现语言的每一
条款22:考虑用运算符的赋值形式(op=)取代其单独形式(op) 大多数程序员认为如果他们能这样写代码: x = x + y; x = x - y;
条款21:通过重载避免隐式类型转换 以下是一段代码,如果没有什么不寻常的原因,实在看不出什么东西: class UPInt {
条款20:协助完成返回值优化 一个返回对象的函数很难有较高的效率,因为传值返回会导致调用对象内的构造和析构函数(参见条款19),这种调用是不能避免的。问题很简单:一个函数要么为了保证正确的行为而返
条款19:理解临时对象的来源 当程序员之间进行交谈时,他们经常把仅仅需要一小段时间的变量称为临时变量。例如在下面这段swap(交换)例程里: template<class T>
条款15:了解异常处理的系统开销 为了在运行时处理异常,程序要记录大量的信息。无论执行到什么地方,程序都必须能够识别出如果在此处抛出异常的话,将要被释放哪一个对象;程序必须知道每一个入口点,以便从
条款14:审慎使用异常规格(exception specifications) 毫无疑问,异常规格是一个引人注目的特性。它使得代码更容易理解,因为它明确地描述了一个函数可以抛出什么样的异常。但是它
条款12:理解“抛出一个异常”与“传递一个参数”或“调用一个虚函数”间的差异 从语法上看,在函数里声明参数与在catch子句中声明参数几乎没有什么差别: class Widget { ..