高质量程序设计指南:C++/C语言

张金乙 2012-10-30

《高质量程序设计指南:C++/C语言》

基本信息

作者:林锐韩永泉[作译者介绍]

出版社:电子工业出版社

ISBN:9787121186172

上架时间:2012-10-24

出版日期:2012年10月

开本:16开

页码:412

版次:1-1

所属分类:计算机>软件与程序设计>C/TurboC>C

计算机>软件与程序设计>C++>C++

高质量程序设计指南:C++/C语言

更多关于 》》》《高质量程序设计指南:C++/C语言

内容简介

书籍

计算机书籍

高质量程序设计是软件行业的薄弱环节,大部分企业为此付出了高昂的代价,只能通过大量的测试和改错来提高软件产品的质量。因此,如何让程序员熟练地掌握编程技术和编程规范,在开发过程中内建高质量代码,是it企业面临的主要挑战之一。

《高质量程序设计指南:c++/c语言》以轻松幽默的笔调向读者论述了高质量软件开发方法与c++/c编程规范,而这也是作者多年从事软件开发工作的经验总结。全书共17章,第1章到第4章重点介绍软件质量和基本的程序设计方法;第5章到第16章重点阐述c++/c编程风格、面向对象程序设计方法和一些技术专题;第17章阐述stl的原理和使用方法。

《高质量程序设计指南:c++/c语言》第1版和第2版部分章节曾经在网上广泛流传,被国内it企业的不少软件开发人员采用。本书的附录c《大学十年》是作者在网上发表的一个短篇传记,文中所描述的充满激情的学习和生活态度,感染了大批莘莘学子。

《高质量程序设计指南:c++/c语言》的主要读者对象是it企业的程序员和项目经理,以及大专院校的本科生和研究生。

目录

《高质量程序设计指南:c++/c语言》

第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.2ada的故事31

2.3c/c++发展简史31

2.4borland与microsoft之争32

2.5java阵营与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.1c++/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.6cruntimelibrary52

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.6switch结构70

4.10循环(重复)结构71

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

4.10.2循环语句的效率73

4.11结构化程序设计原理78

4.12goto/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.3const与#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字符数组、字符串和'\0'的关系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

10.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.7adt/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.7c++对象模型214

12.7.1对象的内存映像214

12.7.2隐含成员224

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

12.7.4c++编译器如何处理静态成员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.7const成员函数264

第15章c++异常处理和rtti267

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

15.2c++异常处理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.9c++的标准异常278

15.3虚函数面临的难题278

15.4rtti及其构成280

15.4.1起源280

15.4.2typeid运算符281

15.4.3dynamic_cast[]运算符283

15.4.4rtti的魅力与代价285

第16章内存管理287

16.1内存分配方式287

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

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

16.4free和delete把指针怎么啦291

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

16.6杜绝“野指针”292

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

16.8malloc/free的使用要点295

16.9new有3种使用方式296

16.9.1plainnew/delete296

16.9.2nothrownew/delete297

16.9.3placementnew/delete297

16.10new/delete的使用要点300

16.11内存耗尽怎么办301

16.12用对象模拟指针302

16.13泛型指针auto_ptr305

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

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

第17章学习和使用stl323

17.1stl简介323

17.2stl头文件的分布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.1string类356

17.8.2bitset并非set356

17.8.3节省存储空间的vector[bool]358

17.8.4空容器360

17.9stl容器特征总结361

17.10stl使用心得364

附录ac++/c试题367

附录bc++/c试题答案与评分标准371

附录c大学十年377

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

附录e术语与缩写解释397

图书信息来源:中国互动出版

相关推荐