前言
C++代码设计与重用
一切事物都将得到检验并因此被称为问题。
Edith Hamilton
这本书的主要目的在于:展示如何以C++编程语言编写可重用代码—就是说,根据不同的需要,在不经过修改,或者经过很少修改的前提下,可重用代码可以很容易地应用到5个、50个甚至500个程序当中,而且这些程序往往是不同程序员编写的,可能运行在不同的系统上。在整个阐述的过程中,我们的目的并不在于争论是否所有的代码都是可重用的,也不在于说明可重用代码能够解决所有的程序问题。显然,不论是对程序员而言,还是对可重用代码本身而言,提高代码的重用性都是需要代价的;通常只有当我们有理由相信所给代码在将来有可能会被重用时,我们才会付出这些重用的代价。因此,本书的目的在于详细分析重用性的这些代价,于是当你面对是否编写可重用代码的选择时,可以从容地做出明智的决定。
关于本书
本书主要面向的读者是:那些希望从书中包含的许多深层C++编程见解中受益的读者,或者是那些需要或希望学习如何编写可重用代码的读者。在论述过程中,我们假设读者已经知道如何编写正确的C++代码。
C++语言至今还没有经过标准化(译注:本书写作于1995年,C++于1997年标准化),任意两个不同的编译器实现支持的语言几乎都是不同(稍微不同或者相差很大)的。当我编写这本书的时候,并没有一个编译器实现可以完全支持ANSI/ISO C++标准中最终定义的整个语言特性;而且,就算对同类型的编译器而言,前后版本实现的语言特性也不尽相同。于是,编写一本对所有编译器都适用的书是很困难的,或者是不可能的。因此,当我们讨论或使用一些不能被主流C++编译器所实现的特性时,我们将会另加说明。
当声明本书中的代码例子被认为合法时,我们所指的合法性是以1994年9月份ANSI/ISO C++的工作文件(有时候也称为“标准草案”)[ANS94]为依据的。而且,在我们的代码例子里,我们将尽量避免使用那些我们认为在最终ANSI/ISO C++标准公布之前,很有可能会被删除或者进行重大修改的语言特性。
第1章 重用性介绍
1.1 什么是重用性
1.2 重用的神话
1.3 重用的障碍
1.4 希望是否尚存
1.5 这本书能给我们带来什么
1.6 练习
1.7 参考文献和相关资料
第2章 类的设计
2.1 抽象性
2.2 正规函数
2.3 Nice类
2.4 存在最小标准接口吗
2.5 浅拷贝和深拷贝
2.6 接口一致性
2.7 转型
2.8 const关键字的使用
2.9 总结
2.10 练习