条款10:在构造函数中防止资源泄漏(上) 如果你正在开发一个具有多媒体功能的通讯录程序。这个通讯录除了能存储通常的文字信息如姓名、地址、电话号码外,还能存储照片和声音(可以给出他们名字的正确发音)
条款10:在构造函数中防止资源泄漏(下) 你可能已经注意到BookEntry构造函数的catch块中的语句与在BookEntry的析构函数的语句几乎一样。这里的代码重复是绝对不可容忍的,所以最好
条款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 { ..