图书介绍
高质量程序设计指南 C++/C语言 第2版PDF|Epub|txt|kindle电子书版本网盘下载
![高质量程序设计指南 C++/C语言 第2版](https://www.shukui.net/cover/18/34789419.jpg)
- 林锐,韩永泉编著 著
- 出版社: 北京:电子工业出版社
- ISBN:750538628X
- 出版时间:2003
- 标注页数:456页
- 文件大小:41MB
- 文件页数:481页
- 主题词:C语言-程序设计
PDF下载
下载说明
高质量程序设计指南 C++/C语言 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1章 高质量软件开发之道1
目录1
1.1 软件质量基本概念2
1.1.1 如何理解软件的质量2
1.1.2 提高软件质量的基本方法4
1.1.3 “零缺陷”理念5
1.2.1 正确性6
1.2.2 健壮性6
1.2 细说软件质量属性6
1.2.3 靠性7
1.2.4 性能8
1.2.5 易用性9
1.2.6 清晰性9
1.2.7 安全性10
1.2.8 可扩展性10
1.2.9 兼容性10
1.3 人们关注的不仅仅是质量11
1.3.1 质量、生产率和成本之间的关系11
1.2.10 可移植性11
1.3.2 软件过程改进基本概念14
1.4 高质量软件开发的基本方法16
1.4.1 建立软件过程规范16
1.4.2 复用19
1.4.3 分而治之21
1.4.4 优化与折中21
1.4.5 技术评审22
1.4.6 测试25
1.4.7 质量保证27
1.4.8 改错28
1.5 关于软件开发的一些常识和思考30
1.5.1 有最好的编程语言吗30
1.5.2 编程是一门艺术吗30
1.5.3 编程时应该多使用技巧吗31
1.5.4 换更快的计算机还是换更快的算法31
1.5.5 错误是否应该分等级31
1.5.6 一些错误的观念32
1.6 小结33
第2章 做好程序员35
2.1 漫谈程序员36
2.2 职业道德37
2.2.1 上班时间不干与工作无关的事情38
2.2.2 不损害集体利益39
2.2.3 不干危害社会的事情39
2.3 工作态度40
2.3.1 认真负责40
2.3.2 服务意识41
2.4.1 合理安排一天的时间42
2.4 高效率地工作42
2.4.2 减少路上花费的时间44
2.4.3 开会45
2.4.4 处理电子邮件45
2.4.5 随时记录46
2.5 程序员佩服什么样的项目经理46
2.5.1 丰富的产品开发经验和比较高的技术水平47
2.5.2 懂得管事和管人47
2.5.3 较好的人格魅力48
2.6 将程序员培养成为经理49
2.7 程序员升为项目经理后是否还要编程50
2.8 学无止境54
2.8.1 不断学习新技术54
2.8.2 提高综合才能55
2.8.3 向错误和失败学习57
2.9 小结59
第3章 编程语言发展简史61
3.1 编程语言大事记62
3.2 Ada的故事66
3.3 C/C++发展简史67
3.4 Borland与Microsoft之争69
3.5 Java阵营与Microsoft的较量70
3.6 小结73
第4章 程序的基本概念75
4.1 程序设计语言76
4.2 语言实现77
4.3 开发环境78
4.4 程序的工作原理79
第5章 C++/C程序设计入门81
5.1.1 不可缺少的函数main()82
5.1.2 main()的命令行参数和返回值82
5.1 C++/C程序的基本概念82
5.1.3 内部名称85
5.1.4 声明、定义和语句86
5.1.5 变量及其初始化88
5.1.6 C Runtime Library88
5.1.7 编译时和运行时的不同89
5.1.8 编译单元和分离编译技术90
5.2 基本数据类型和内存映像91
5.3.1 隐式转换92
5.3 类型转换92
5.3.2 强制转换94
5.4 标识符96
5.5 转义序列97
5.6 运算符98
5.7 表达式100
5.8 基本控制结构102
5.9 选择(判断)结构103
5.9.1 布尔变量与零值比较103
5.9.3 浮点变量与零值比较104
5.9.2 整型变量与零值比较104
5.9.4 指针变量与零值比较105
5.9.5 对if语句的补充说明105
5.9.6 switch结构106
5.10 循环(重复)结构108
5.10.1 for语句的循环控制变量109
5.10.2 循环语句的效率110
5.11 结构化程序设计原理112
5.12 goto/continue/break语句112
5.13 示例113
第6章 C++/C常量121
6.1 认识常量122
6.1.1 字面常量122
6.1.2 符号常量122
6.1.3 契约性常量124
6.1.4 枚举常量124
6.2 使用符号常量125
6.3 const与#define的比较126
6.4 类中的常量126
第7章 C++/C函数设计基础129
7.2 函数原型和定义130
7.1 认识函数130
7.3 函数调用方式132
7.4 认识函数堆栈134
7.5 参数传递规则137
7.6 返回值的规则139
7.7 函数内部实现的规则142
7.8 存储类型及作用域规则144
7.8.1 存储类型145
7.8.2 作用域规则146
7.8.3 连接类型147
7.9 递归函数149
7.10 使用断言153
7.11 使用const提高函数的健壮性156
7.11.1 用const修饰函数的参数156
7.11.2 用const修饰函数的返回值157
第8章 C++/C指针、数组和字符串159
8.1 指针160
8.1.1 指针的本质160
8.1.2 指针的类型及其支持的运算162
8.1.3 指针传递164
8.2.1 数组的本质166
8.2 数组166
8.2.2 二维数组169
8.2.3 数组传递170
8.3 字符数组、字符指针和字符串172
8.3.1 字符数组、字符串和“ ”的迷思172
8.3.2 字符指针的误区173
8.3.3 字符串复制和比较174
8.4 数指针174
8.5 引用和指针的比较177
第9章 C++/C高级数据类型181
9.1 结构(Struct)182
91.1 关键字struct与class的困惑182
9.1.2 使用struct183
9.1.3 位域187
9.2 联合(Union)189
9.3 枚举(Enum)193
9.4 文件194
第10章 C++/C编译预处理197
10.2 宏定义198
10.1 文件包含198
10.3.1 #if、#elif和#else201
10.3 条件编译201
10.3.2 #ifdef和#ifndef202
10.4 #error203
10.5 #pragma203
10.6 #和##运算符204
10.7 预定义符号常量205
第11章 C++/C文件结构和程序版式207
11.1 程序文件的目录结构208
11.2.1 头文件的用途和结构209
11.2 文件的结构209
11.2.2 版权和版本信息210
11.2.3 源文件结构211
11.3 代码的版式211
11.3.1 适当的空行211
11.3.2 代码行及行内空格212
11.3.3 长行拆分214
11.3.4 对齐与缩进215
11.3.6 注释风格216
11.3.5 修饰符的位置216
11.3.7 ADT/UDT版式218
第12章 C++/C应用程序命名规则221
12.1 共性规则222
12.2 简单的Windows应用程序命名规则223
第13章 C++/C面向对象程序设计方法概述227
13.1 漫谈面向对象228
13.2 对象的概念229
13.3 信息隐藏与类的封装230
13.4 类的继承特性231
13.5 类的组合特性233
13.6 动态特性236
13.6.1 虚函数236
13.6.2 抽象基类237
13.6.3 动态决议240
13.6.4 多态242
13.7 C++对象模型243
13.7.1 对象的内存映像243
13.7.2 隐含成员和填补字节247
13.7.3 C++编译器如何处理成员函数248
13.7.4 C++编译器如何处理静态成员249
13.8 小结250
第14章 类的构造、析构与赋值函数251
14.1 构造函数与析构函数的起源252
14.2 为什么需要构造函数253
14.3 构造函数的成员初始化列表255
14.4 对象的构造和析构次序258
14.5 构造函数和析构函数的调用时机259
14.6 构造函数和赋值函数的重载261
14.7 示例:类String的构造函数和析构函数262
14.8 何时应该定义拷贝构造函数和拷贝赋值函数263
14.9 示例:类String的拷贝构造函数和拷贝赋值函数264
14.10 用偷懒的办法处理拷贝构造函数和拷贝赋值函数267
14.11 如何实现派生类的基本函数267
第15章 C++函数的高级特性271
15.1.1 重载的起源272
15.1.2 重载是如何实现的272
15.1 函数重载的概念272
15.1.3 当心隐式类型转换导致重载函数产生二义性275
15.2 成员函数的重载、覆盖与隐藏276
15.2.1 重载与覆盖276
15.2.2 令人迷惑的隐藏规则277
15.2.3 摆脱隐藏279
15.3 参数的默认值280
15.4 运算符重载282
15.4.1 基本概念282
15.4.2 运算符重载的特殊性283
15.4.3 不能重载的运算符284
15.4.4 重载++和--284
15.5 函数内联287
15.5.1 用函数内联取代宏287
15.5.2 内联函数的编程风格288
15.5.3 慎用内联289
15.6 类型转换函数290
15.7 const成员函数293
第16章 C++异常处理和RTTI297
16.1 为什么要使用异常处理298
16.2.1 异常处理的原理299
16.2 C++异常处理299
16.2.2 异常类型和异常对象301
16.2.3 异常处理的语法结构302
16.2.4 异常的类型匹配规则304
16.2.5 异常说明及其冲突305
16.2.6 当异常抛出时局部对象如何释放306
16.2.7 对象构造和析构期间的异常306
16.2.8 如何使用好异常处理技术308
16.3 虚函数面临的难题312
16.2.9 C++的标准异常312
16.4 RTTI及其构成315
16.4.1 起源315
16.4.2 typeid运算符316
16.4.3 dynamic cast<>运算符318
16.4.4 RTTI的魅力与代价321
第17章 C++名字空间和模板323
17.1 名字空间324
17.1.1 为什么要使用名字空间324
17.1.2 名字空间的特性325
17.1.3 如何使用名字空间328
17.2 模板技术331
17.2.1 基本概念331
17.2.2 类模板332
17.2.3 模板参数335
17.2.4 函数模板338
17.2.5 模板实例化342
17.2.6 模板特化344
第18章 内存管理347
18.2 常见的内存错误及其对策348
18.1 内存分配方式348
18.3 指针参数是如何传递内存的350
18.4 free和delete把指针怎么啦353
18.5 动态内存会被自动释放吗354
18.6 杜绝“野指针”354
18.7 有了malloc/free为什么还要new/delete356
18.8 malloc/free的使用要点358
18.9 new有3种使用方式359
18.9.1 plain new359
18.9.3 placement new/delete360
18.9.2 nothrow new360
18.10 new/delete的使用要点364
18.11 内存耗尽怎么办365
18.12 用对象模拟指针367
18.13 泛型指针370
第19章 学习和使用STL373
19.1 STL简介374
19.2 STL头文件的分布375
19.2.1 容器类375
19.2.4 数学运算库376
19.2.2 泛型算法376
19.2.3 迭代器376
19.2.5 通用工具377
19.2.6 其他头文件377
19.3 容器设计原理377
19.3.1 内存映像377
19.3.2 存储方式和访问方式379
19.3.3 顺序容器和关联式容器的比较380
19.3.4 如何遍历容器383
19.3.5 存储空间重分配问题384
19.3.6 什么样的对象才能作为STL容器的元素385
19.4 迭代器388
19.4.1 迭代器的本质388
19.4.2 迭代器失效及其危险性392
19.5 存储分配器394
19.6 适配器394
19.7 泛型算法398
19.8 一些特殊的容器403
19.8.1 string类403
19.8.2 bitset并非set404
19.8.3 节省存储空间的vector〈bool〉406
19.8.4 空容器408
19.9 STL容器特征总结410
19.10 STL使用心得414
附录A C++/C试题415
附录B C++/C试题的答案与评分标准419
附录C 大学十年425
附录D 《大学十年》后记447
附录E 术语与缩写解释449
参考文献451