高质量程序设计指南:C++/C语言
《高质量程序设计指南:C++/C语言》
基本信息
作者:林锐韩永泉[作译者介绍]
出版社:电子工业出版社
ISBN:9787121186172
上架时间:2012-10-24
出版日期:2012年10月
开本:16开
页码:412
版次:1-1
所属分类:计算机>软件与程序设计>C/TurboC>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