本书在一开始就向我们讲解了如何为我们的设计选择正确的抽象,提示我们注意抽象和现实之间的区别。然后,我们就将学到如何将已得到的抽象转化成一个(或多个)C++中的类,期间进行的讨论所涵盖的范围上至高层的设计策略,下至底层的接口和实现细节。
接下来本书对单继承和多重继承进行了深入的探索。一开始书中会给出一个关于它们应该用在设计的什么地方的讨论,然后就是一些详细的示例代码,用来向我们演示如何在实践中使用这些概念。对于
Robert B.Murray在撰写该书时是量子数据系统公司(Quantitative Data Systems)中负责软件工程的副总裁,该公司的业务包括向财富500强(Fortune 500)中的公司提供面向对象的软件解决方案。在此之前,他曾经在AT & T的Bell实验室工作,在那里他参与了C++语言、编译器以及库的开发。他同时也是《The C++ Report》杂志的创立编辑(founding editor),主持Obfuscated C++专栏。从1987年起,他就开始在学术会议和专业会议上向人教授C++语言。目前Murray在FNIS公司进行着软件开发的管理,他的兴趣主要包括:程序语言的开发和工具,以及轻量级的开发过程(如极限编程)。
【目录】
目 录 代译者序 序
第0章 简介 0. 1 关于示例代码 0. 2 本书的组织 0. 3 问题 0. 4 语言规则
第1章 抽象 1. 1 有关电话号码的抽象模型 1. 2 抽象模型间的关系 1. 3 请考虑边界条件 1. 4 使用CRC卡片来辅助设计 1. 5 小结 1. 6 问题
第2章 类 2. 1 构造函数 2. 2 赋值 2. 3 公用数据 2. 4 隐式类型转换 2. 5 操作符重载:成员或非成员 2. 6 重载. 缺省值以及省略符 2. 7 Const 2. 8 返回值为引用 2. 9 静态对象的构造 2. 10 小结 2. 11 问题
第3章 句柄 3. 1 一个String类 3. 2 使用计数器来避免多份拷贝 3. 3 避免进行重编译:Cheshire Cat 3. 4 使用句柄来隐藏设计 3. 5 多种实现 3. 6 作为对象的句柄 3. 7 综述 3. 8 小结 3. 9 问题
第4章 继承 4. 1 is-a关系 4. 2 公有继承 4. 3 私有继承 4. 4 保护型继承 4. 5 与基类抽象的一致性 4. 6 纯虚函数 4. 7 有关继承的细节和陷阱 4. 8 小结 4. 9 问题
第5章 多重继承 5. 1 作为交集的多重继承 5. 2 虚基类 5. 3 一些有关多重继承的细节问题 5. 4 小结 5. 5 问题
第6章 考虑继承的设计 6. 1 被保护的接口 6. 2 我们的设计是否应该考虑到继承 6. 3 一些为继承所做的设计的例子 6. 4 结论 6. 5 小结 6. 6 问题
第7章 模板 7. 1 模板类Pair 7. 2 一些有关模板的细节 7. 3 模板的实例化 7. 4 智能指针 7. 5 作为模板参数的表达式 7. 6 模板函数 7. 7 小结 7. 8 问题
第8章 模板的高级用法 8. 1 使用了模板的容器类 8. 2 示例:Block 8. 3 有关Block的设计细节 8. 4 带有迭代器的容器:List 8. 5 迭代器的设计细节 8. 6 性能上的考虑 8. 7 对模板参数的限制 8. 8 模板特化 8. 9 小结 8. 10 问题
第9章 重用 9. 1 发现和获得 9. 2 健壮性 9. 3 内存管理 9. 4 可选的内存分配方案 9. 5 传递参数给operatornew 9. 6 管理外部资源 9. 7 寻找有关内存的bug 9. 8 名字冲突 9. 9 性能 9. 10 不要去猜想, 而应该度量! 9. 11 算法 9. 12 动态内存分配中的瓶颈 9. 13 内嵌 9. 14 Tiemann法则 9. 15 小结 9. 16 问题
第10章 异常 10. 1 一个负面的声明 10. 2 为什么需要异常 10. 3 一个异常的例子 10. 4 异常只应该用来表述异常情况 10. 5 理解异常 10. 6 责任评估 10. 7 设计异常对象 10. 8 小结 10. 9 问题
第11章 向C 移植 11. 1 选择使用C 11. 2 采用C 11. 3 设计和实现 11. 4 开发一个坚实的基础 11. 5 相关的思考 11. 6 小结 11. 7 问题