C++编程惯用法:高级程序员常用方法和技巧

C++编程惯用法:高级程序员常用方法和技巧
作 者: Robert Murray 王昕 王昕
出版社: 中国电力出版社
丛编项: 深入C++系列
版权说明: 本书为公共版权或经版权方授权,请支持正版图书
标 签: C++
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

  Robert B.Murray在撰写该书时是量子数据系统公司(Quantitative Data Systems)中负责软件工程的副总裁,该公司的业务包括向财富500强(Fortune 500)中的公司提供面向对象的软件解决方案。在此之前,他曾经在AT & T的Bell实验室工作,在那里他参与了C++语言、编译器以及库的开发。他同时也是《The C++ Report》杂志的创立编辑(founding editor),主持Obfuscated C++专栏。从1987年起,他就开始在学术会议和专业会议上向人教授C++语言。目前Murray在FNIS公司进行着软件开发的管理,他的兴趣主要包括:程序语言的开发和工具,以及轻量级的开发过程(如极限编程)。王昕,自1995年起接触C++编辑,参与过多个C++项目的开发。曾在网上和杂志上发表过多篇有关C++的文章。主要兴趣包括:程序语言的开发、形式化理论、软件开发方法学等。

内容简介

在本书中,C++专家RobMurray就与我们分享了他宝贵的经验和建议,以帮助初中级C++程序员得到进一步的提高。作者大量采用了实际开发中的代码来作为示例,向读者展示了那些有用的编程策略,并对那些有害的做法进行了警示。为了帮助读者更好地理解,在书中的每一章结束前,在该章中被介绍过的主要内容都被放到了一个列表中,此外,书中还给出了一些问题来激励读者们进行更多的思考和讨论。本书在一开始就向我们讲解了如何为我们的设计选择正确的抽象,提示我们注意抽象和实现之间的区别—然后,我们就将学到如何将己得到的抽象转化成一个(或多个)C++中的类,期间进行的讨论所涵盖的范围上至高层的设计策略,下至底层的接口和实现细节。对于C++中新增的模板特性,通过从基础开始到逐步地接触实际应用中的示例,RobMurray向我们展示了其空前的洞察力。作者同时也向我们展示了多种特定的技巧,以使我们的程序更快、重用性更高,并且更健壮。异常是C++中另外一个新增的特性,对于何时该使用它,何时不该使用它,Murray也向我们给出了他的建议-在本书的最后,我们还可以学到如何将一个项目从C移植到C++之上,书中对该过程的讨论不但包括了其中可能出现的技术问题,也包括了使用技术的“人”的问题。作者RobertB.Murray在撰写该书时是量子数据系统公司(QuantitativeDataSystems)中负责软件工程的副总裁,该公司的业务包括向财富500强(Fodune500)中的公司提供面向对象的软件解决方案在此之前,他曾经在AT&T的Bell实验室工作,在那里他参与了C++语言、编译器以及库的开发。他同时也是《TheC++Report》杂志的创立编辑(foundingeditor),主持ObfuscatedC++专栏。从1987年起,他就开始在学术会议和专业会议上向人教授C++语言。目前Murray在FNIS公司进行着软件开发的管理,他的兴趣主要包括:程序语言的开发和工具,以及轻量级的开发过程(如极限编程)译者王昕自1995年起接触C++编程,参与过多个C++项目的开发。曾在网上和杂志上发表过多篇有关C++的文章。主要兴趣包括:程序语言的开发、形式化理论、软件开发方法学等。

图书目录

代译者序

第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 问题