图书介绍

高质量程序设计指南 C++/C语言2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

高质量程序设计指南 C++/C语言
  • 林锐,韩永泉编著 著
  • 出版社: 北京:电子工业出版社
  • ISBN:9787121186172
  • 出版时间:2012
  • 标注页数:396页
  • 文件大小:157MB
  • 文件页数:414页
  • 主题词:C程序-程序设计

PDF下载


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

下载说明

高质量程序设计指南 C++/C语言PDF格式电子书版下载

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

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

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

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

图书目录

第1章 高质量软件开发之道1

1.1 软件质量基本概念1

1.1.1 如何理解软件的质量1

1.1.2 提高软件质量的基本方法2

1.1.3 “零缺陷”理念4

1.2 细说软件质量属性4

1.2.1 正确性4

1.2.2 健壮性4

1.2.3 可靠性5

1.2.4 性能6

1.2.5 易用性6

1.2.6 清晰性7

1.2.7 安全性7

1.2.8 可扩展性8

1.2.9 兼容性8

1.2.10 可移植性8

1.3 人们关注的不仅仅是质量9

1.3.1 质量、生产率和成本之间的关系9

1.3.2 软件过程改进的基本概念10

1.4 高质量软件开发的基本方法13

1.4.1 建立软件过程规范13

1.4.2 复用15

1.4.3 分而治之16

1.4.4 优化与折中17

1.4.5 技术评审17

1.4.6 测试19

1.4.7 质量保证21

1.4.8 改错22

1.5 关于软件开发的一些常识和思考23

1.5.1 有最好的编程语言吗23

1.5.2 编程是一门艺术吗23

1.5.3 编程时应该多使用技巧吗24

1.5.4 换更快的计算机还是换更快的算法24

1.5.5 错误是否应该分等级24

1.5.6 一些错误的观念25

1.6 小结25

第2章 编程语言发展简史27

2.1 编程语言大事记27

2.2 Ada的故事31

2.3 C/C++发展简史31

2.4 Borland与Microsoft之争32

2.5 Java阵营与Microsoft的较量33

2.6 小结36

第3章 程序的基本概念37

3.1 程序设计语言37

3.2 语言实现38

3.3 程序库40

3.4 开发环境40

3.5 程序的工作原理41

3.6 良好的编程习惯42

第4章 C++/C程序设计入门45

4.1 C++/C程序的基本概念45

4.1.1 启动函数main()45

4.1.2 命令行参数47

4.1.3 内部名称48

4.1.4 连接规范49

4.1.5 变量及其初始化51

4.1.6 C Runtime Library52

4.1.7 编译时和运行时的不同52

4.1.8 编译单元和独立编译技术54

4.2 基本数据类型和内存映像54

4.3 类型转换56

4.3.1 隐式转换56

4.3.2 强制转换58

4.4 标识符60

4.5 转义序列61

4.6 运算符62

4.7 表达式63

4.8 基本控制结构65

4.9 选择(判断)结构65

4.9.1 布尔变量与零值比较66

4.9.2 整型变量与零值比较67

4.9.3 浮点变量与零值比较67

4.9.4 指针变量与零值比较69

4.9.5 对if语句的补充说明69

4.9.6 switch结构70

4.10 循环(重复)结构71

4.10.1 for语句的循环控制变量72

4.10.2 循环语句的效率73

4.11 结构化程序设计原理78

4.12 goto/continue/break语句79

4.13 示例79

第5章 C++/C常量85

5.1 认识常量85

5.1.1 字面常量85

5.1.2 符号常量86

5.1.3 契约性常量87

5.1.4 枚举常量87

5.2 正确定义符号常量87

5.3 const与#define的比较88

5.4 类中的常量89

5.5 实际应用中如何定义常量90

第6章 C++/C函数设计基础95

6.1 认识函数95

6.2 函数原型和定义96

6.3 函数调用方式97

6.4 认识函数堆栈99

6.5 函数调用规范100

6.6 函数连接规范101

6.7 参数传递规则102

6.8 返回值的规则104

6.9 函数内部实现的规则107

6.10 存储类型及作用域规则109

6.10.1 存储类型109

6.10.2 作用域规则110

6.10.3 连接类型111

6.11 递归函数113

6.12 使用断言116

6.13 使用const提高函数的健壮性118

6.13.1 用const修饰函数的参数118

6.13.2 用const修饰函数的返回值119

第7章 C++/C指针、数组和字符串121

7.1 指针121

7.1.1 指针的本质121

7.1.2 指针的类型及其支持的运算123

7.1.3 指针传递125

7.2 数组126

7.2.1 数组的本质126

7.2.2 二维数组128

7.2.3 数组传递129

7.2.4 动态创建、初始化和删除数组的方法131

7.3 字符数组、字符指针和字符串133

7.3.1 字符数组、字符串和′′的关系133

7.3.2 字符指针的误区134

7.3.3 字符串拷贝和比较134

7.4 函数指针134

7.5 引用和指针的比较137

第8章 C++/C高级数据类型141

8.1 结构(struct)141

8.1.1 关键字struct与class的困惑141

8.1.2 使用struct142

8.1.3 位域145

8.1.4 成员对齐147

8.2 联合(Union)159

8.3 枚举(Enum)161

8.4 文件162

第9章 C++/C编译预处理165

9.1 文件包含165

9.1.1 内部包含卫哨和外部包含卫哨165

9.1.2 头文件包含的合理顺序166

9.2 宏定义166

9.3 条件编译169

9.3.1 #if、#elif和#else169

9.3.2 #ifdef和#ifndef170

9.4 #error170

9.5 #pragma171

9.6 #和##运算符171

9.7 预定义符号常量172

第10章 C++/C文件结构和程序版式173

10.1 程序文件的目录结构173

10.2 文件的结构174

10.2.1 头文件的用途和结构174

10.2.2 版权和版本信息175

1 0.2.3 源文件结构176

10.3 代码的版式176

10.3.1 适当的空行176

10.3.2 代码行及行内空格177

10.3.3 长行拆分178

10.3.4 对齐与缩进179

10.3.5 修饰符的位置180

10.3.6 注释风格180

10.3.7 ADT/UDT版式181

第11章 C++/C应用程序命名规则183

11.1 共性规则183

11.2 简单的Windows应用程序命名184

第12章 C++面向对象程序设计方法概述187

12.1 漫谈面向对象187

12.2 对象的概念188

12.3 信息隐藏与类的封装189

12.4 类的继承特性193

12.5 类的组合特性199

12.6 动态特性200

12.6.1 虚函数200

12.6.2 抽象基类201

12.6.3 动态绑定203

12.6.4 运行时多态206

12.6.5 多态数组207

12.7 C++对象模型214

12.7.1 对象的内存映像214

12.7.2 隐含成员224

12.7.3 C++编译器如何处理成员函数225

12.7.4 C++编译器如何处理静态成员225

12.8 小结226

第13章 对象的初始化、拷贝和析构229

13.1 构造函数与析构函数的起源229

13.2 为什么需要构造函数和析构函数230

13.3 构造函数的成员初始化列表232

13.4 对象的构造和析构次序234

13.5 构造函数和析构函数的调用时机235

13.6 构造函数和赋值函数的重载236

13.7 示例:类String的构造函数和析构函数238

13.8 何时应该定义拷贝构造函数和拷贝赋值函数239

13.9 示例:类String的拷贝构造函数和拷贝赋值函数240

13.10 用偷懒的办法处理拷贝构造函数和拷贝赋值函数242

13.11 如何实现派生类的基本函数243

第14章 C++函数的高级特性247

14.1 函数重载的概念247

14.1.1 重载的起源247

14.1.2 重载是如何实现的247

14.1.3 小心隐式类型转换导致重载函数产生二义性249

14.2 成员函数的重载、覆盖与隐藏250

14.2.1 重载与覆盖250

14.2.2 令人迷惑的隐藏规则251

14.2.3 摆脱隐藏253

14.3 参数的默认值254

14.4 运算符重载255

14.4.1 基本概念255

14.4.2 运算符重载的特殊性256

14.4.3 不能重载的运算符257

14.4.4 重载+++和--257

14.5 函数内联259

14.5.1 用函数内联取代宏259

14.5.2 内联函数的编程风格260

14.5.3 慎用内联261

14.6 类型转换函数261

14.7 const成员函数264

第15章 C++异常处理和RTTI267

15.1 为什么要使用异常处理267

15.2 C++异常处理268

15.2.1 异常处理的原理268

15.2.2 异常类型和异常对象269

15.2.3 异常处理的语法结构270

15.2.4 异常的类型匹配规则272

15.2.5 异常说明及其冲突272

15.2.6 当异常抛出时局部对象如何释放273

15.2.7 对象构造和析构期间的异常273

15.2.8 如何使用好异常处理技术275

15.2.9 C+++的标准异常278

15.3 虚函数面临的难题278

15.4 RTTI及其构成280

15.4.1 起源280

15.4.2 typeid运算符281

15.4.3 dynamic_cast<>运算符283

15.4.4 RTTI的魅力与代价285

第16章 内存管理287

16.1 内存分配方式287

16.2 常见的内存错误及其对策288

16.3 指针参数是如何传递内存的289

16.4 free和delete把指针怎么啦291

16.5 动态内存会被自动释放吗292

16.6 杜绝“野指针”292

16.7 有了malloc/free为什么还要new/delete293

16.8 malloc/free的使用要点295

16.9 new有3种使用方式296

16.9.1 plain new/delete296

16.9.2 nothrow new/delete297

16.9.3 placement new/delete297

16.10 new/delete的使用要点300

16.11 内存耗尽怎么办301

16.12 用对象模拟指针302

16.13 泛型指针auto_ptr305

16.14 带有引用计数的智能指针306

16.15 智能指针作为容器元素312

第17章 学习和使用STL323

17.1 STL简介323

17.2 STL头文件的分布324

17.2.1 容器类324

17.2.2 泛型算法325

17.2.3 迭代器325

17.2.4 数学运算库325

17.2.5 通用工具325

17.2.6 其他头文件326

17.3 容器设计原理326

17.3.1 内存映像326

17.3.2 存储方式和访问方式327

17.3.3 顺序容器和关联式容器的比较328

17.3.4 如何遍历容器331

17.3.5 存储空间重分配问题332

17.3.6 什么样的对象才能作为STL容器的元素333

17.4 迭代器334

17.4.1 迭代器的本质334

17.4.2 迭代器失效及其危险性337

17.4.3 如何在遍历容器的过程中正确删除元素346

17.5 存储分配器347

17.6 适配器349

17.7 泛型算法352

17.8 一些特殊的容器355

17.8.1 string类356

17.8.2 bitset并非set356

17.8.3 节省存储空间的vector<bool>358

17.8.4 空容器360

17.9 STL容器特征总结361

17.10 STL使用心得364

附录A C++/C试题367

附录B C++/C试题答案与评分标准371

附录C 大学十年377

附录D 《大学十年》后记395

附录E 术语与缩写解释397

热门推荐