图书介绍

C++代码设计与重用PDF|Epub|txt|kindle电子书版本下载

C++代码设计与重用
  • Martin D.Carroll,Margaret A.Ellis著;陈伟柱译 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:711510624X
  • 出版时间:2002
  • 标注页数:269页
  • 文件大小:13MB
  • 文件页数:292页
  • 主题词:

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

C++代码设计与重用PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 重用性介绍1

1.1 什么是重用性1

1.1.1 提取代码来作为重用2

1.1.2 可重用代码的基本特性2

1.2 重用的神话3

1.3 重用的障碍4

1.3.1 非技术障碍4

1.3.2 技术障碍5

1.4 希望是否尚存6

1.5 这本书能给我们带来什么7

1.6 练习8

1.7 参考文献和相关资料9

2.1 抽象性11

第2章 类的设计11

2.2 正规函数12

2.3 Nice类14

2.4 存在最小标准接口吗15

2.4.1 缺省构造函数16

2.4.2 赋值运算符17

2.4.3 拷贝构造函数18

2.4.4 相等运算符18

2.4.5 析构函数18

2.5 浅拷贝和深拷贝19

2.6 接口一致性22

2.7 转型25

2.7.1 多重所有权(Multiple Ownership)26

2.7.2 敏感转型26

2.7.4 转型数目(Fanout)28

2.7.3 不敏感转型28

2.8 const关键字的使用29

2.8.1 抽象const对比位元const29

2.8.2 最大限度地使用const31

2.8.3 对const不安全的解释32

2.9 总结33

2.10 练习34

2.11 参考文献和相关资料37

第3章 扩展性39

3.1 扩展性的权衡39

3.2 扩展性和继承40

3.2.1 只继承基类的接口41

3.2.2 只继承基类的实现42

3.3 继承语义(Semantic)43

3.2.3 同时继承基类的接口和实现43

3.4 继承的障碍45

3.4.1 非虚成员函数45

3.4.2 过度保护47

3.4.3 模块化不足48

3.4.4 friend关键字的使用51

3.4.5 成员变量过多51

3.4.6 非虚(Nonvirtual)派生52

3.4.7 妨碍继承的成员函数53

3.5 派生赋值问题55

3.6 允许入侵(用户修改源代码)继承57

3.7 总结57

3.8 练习58

3.9 参考文献和相关资料60

4.1 效率和重用性61

第4章 效率61

4.2 程序创建时间62

4.2.1 编译时间62

4.2.2 实例化时间64

4.3 代码大小69

4.3.1 源文件分割69

4.3.2 外联的(outlined)inline71

4.3.3 模板特化大小71

4.4 运行时间72

4.4.1 内联(inlining)72

4.4.2 虚函数74

4.4.3 返回引用76

4.5 空闲存储空间(free-store)和堆栈空间(stack space)78

4.5.1 使用高效的算法79

4.5.2 尽可能快地释放空闲资源80

4.5.3 静态对象81

4.5.4 庞大的对象82

4.6 效率的权衡83

4.6.1 实现更加困难84

4.6.2 使用更加困难86

4.7 总结86

4.8 练习87

4.9 参考文献和相关资料89

第5章 错误91

5.1 可重用代码中的错误91

5.2 错误检测92

5.2.1 函数前提条件93

5.2.2 表示不变性93

5.3.2 解决问题95

5.3.1 程序库变量95

5.3 处理错误95

5.3.3 程序退出或者程序中止(Exit or Abort)96

5.3.4 抛出异常96

5.3.5 返回错误值97

5.3.6 创建Nil值98

5.3.7 把无效的数据解释为有效的数据99

5.3.8 允许不确定的行为99

5.4 资源限制(Resource-Limit)错误100

5.4.1 堆栈溢出100

5.4.2 用完空闲存储空间101

5.4.3 文件系统限制102

5.5 异常安全性103

5.5.1 不一致的状态103

5.5.2 资源泄漏105

5.6 总结106

5.7 练习107

5.8 参考文献和相关资料110

第6章 冲突111

6.1 全局名称111

6.1.1 翻译单元112

6.1.2 类的定义112

6.1.3 函数和数据的定义114

6.1.4 程序库的蕴涵意义114

6.1.5 命名约定115

6.1.6 namespace(名字空间)结构117

6.2 宏名称118

6.2.1 宏名称冲突118

6.2.2 去掉宏119

6.3 环境名称121

6.2.3 宏的命名约定121

6.4 Unclean程序库122

6.5 Good-Citizen程序库123

6.6 总结123

6.7 练习124

6.8 参考文献和相关资料125

第7章 兼容性127

7.1 向后和向前兼容性127

7.2 兼容性的形式128

7.3 理论源代码兼容性129

7.4 实际源代码兼容性130

7.5 链接兼容性131

7.6 运行兼容性133

7.7 进程兼容性134

7.9 非文档化特性135

7.8 文档化不兼容性135

7.10 总结136

7.11 练习137

7.12 参考文献和相关资料142

第8章 继承体系143

8.1 根数目、深度和扇出数143

8.2 体系类型146

8.2.1 直接体系146

8.2.2 接口体系147

8.2.3 对象工厂(Object Factory)149

8.2.4 句柄体系151

8.3 模板还是继承154

8.3.1 指针操纵155

8.3.2 派生要求156

8.3.3 实现不需要的函数157

8.4 总结158

8.5 练习159

8.6 参考文献和相关资料161

第9章 移植性163

9.1 有编写可移植代码的必要吗163

9.1.1 可移植性的优缺点163

9.1.2 目标代码和创建过程的可移植性164

9.2 不断发展的语言定义165

9.2.1 冲突165

9.2.2 实现的完整性166

9.3 不确定的行为166

9.3.1 排列方式和补全(padding)167

9.3.2 地址操纵168

9.4 合法但不可移植的代码169

9.4.1 实现性定义的行为169

9.4.2 未经指定的行为170

9.5 实现依赖性171

9.6 可移植的数据文件172

9.7 模板实例化173

9.7.1 自动的实例化器173

9.7.2 人工实例化177

9.8 运行期程序库179

9.9 其他移植性问题180

9.10 总结181

9.11 练习182

9.12 参考文献和相关资料184

10.1 为何要重用其他程序库185

第10章 使用其他程序库185

10.2 使用其他程序库的缺点186

10.2.1 获得可重用程序库186

10.2.2 效率187

10.2.3 冲突187

10.2.4 版本同步188

10.3 自含式(Self-Contained)程序库190

10.3.1 实现困难190

10.3.2 使用困难191

10.3.3 效率192

10.3.4 隔离192

10.4 总结193

10.5 练习193

11.1 文档编制和重用性195

第11章 文档编制195

11.2 设计文档196

11.3 使用指南196

11.3.1 对读者的背景知识了如指掌197

11.3.2 用抽象的观点来编写197

11.3.3 先解释普通用法198

11.3.4 一次只解释一个事物198

11.3.5 解释用法,不解释设计思路199

11.3.6 简单清楚地编写199

11.3.7 准确地使用语言199

11.3.8 使用普遍接受的术语200

11.3.9 深刻理解重载的术语200

11.3.11 保持简短的代码段201

11.3.12 避免使用太大的函数201

11.3.10 给出合法的、无错误的代码201

11.3.13 提供在线实例202

11.4 参考手册203

11.4.1 抽象化203

11.4.2 语法接口203

11.4.3 函数语义205

11.4.4 模板参数约束206

11.5 总结207

11.6 练习207

11.7 参考文献和相关资料208

第12章 其他话题209

12.1 静态初始化问题209

12.1.1 构造和析构的时刻210

12.1.2 程序库的蕴含意义211

12.1.3 初始化函数213

12.1.4 初始化检查214

12.1.5 初始化对象216

12.1.6 双构造217

12.2 局部化开销原则218

12.2.1 局部化开销和C++219

12.2.2 局部化开销和程序库219

12.3 内生类和外生类220

12.4 迭代器222

12.5 类耦合224

12.6 推迟决定226

12.7 总结229

12.8 练习229

12.9 参考文献和相关资料232

中英文术语对照表235

参考文献263

热门推荐