完美C++(第5版)为读者提供了一个学习、理解和掌握 C++编程语言的全面视图,覆盖面广、实用性强。书中介绍了 C++的基本数据类型,如字符串、数组、指针、结构体、类等,同时也详细描述了面向对象编程语言的特性:封装、继承和多态,以及这些特性在 C++语言中的具体使用方式。本书的后面章节还重点介绍了模板、链式数据结构、标准模板库以及异常处理等C++语言的进阶编程知识。这些知识在从事具体编程工作时会经常使用到。
完美C++(第5版)对C++的一些重点知识,辅以实例进行了重点讲解,特别是对一些易混淆、易犯错的知识点,专门以“陷阱”的组织方式进行深入分析和讨论,帮助读者更好地理解和掌握。书中各章均含有大量例子及完整的代码段和分析,帮助读者强化对关键概念的理解,以及对主题的掌握。各章还配有丰富的自测习题以及答案,帮助读者进一步提升对C++知识的理解以及实际动手编程能力。
原书由知名学者所著,历经多个版本,根据C++技术的发展,内容不断完善、丰富,体系完整、实践性强。
完美C++(第5版)(双色) 目录:
第1章 C++ 基础 1
1.1 C++简介 2
C++语言的起源 2
C++与面向对象编程 3
C++的特点 3
C++术语 3
C++程序示例 3
1.2 变量、表达式及赋值语句 5
标识符 5
变量 6
赋值语句 8
string类简介 9
陷阱:未初始化变量 9
提示:采用有意义的变量名 10
更多赋值语句 11
赋值兼容性 11
字面值 12
转义序列 14
命名常量 14
算数运算符和表达式 16
整数和浮点数除法 17
陷阱:全整数除法 17
类型转换 18
自增和自减运算符 20
陷阱:求值顺序 21
1.3 控制台输入/输出 22
使用cout输出 22
换行符 23
提示:以\n或endl结束程序 24
格式化浮点数 24
用cerr输出 25
用cin输入 25
提示:输入/输出中的换行 28
1.4 编程风格 28
注释 28
1.5 库与命名空间 29
库与include命令 29
命名空间 29
陷阱:库名的问题 30
第2章 流程控制 37
2.1 布尔表达式 38
创建布尔表达式 38
陷阱:不等式连写 39
布尔表达式求值 40
优先级规则 41
陷阱:整数值用作布尔值 44
2.2 分支机制 45
if-else语句 45
复合语句 47
陷阱:用=代替== 47
省略else 49
嵌套语句 49
多分支if-else语句 49
switch语句 50
陷阱:遗漏switch语句中的break 52
提示:在菜单中使用switch语句 52
枚举类型 53
条件运算符 53
2.3 循环 54
while和do-while循环 54
再谈自增和自减运算符 57
逗号运算符 58
for语句 59
提示:重复N次的循环 61
陷阱:for语句中额外的分号 62
陷阱:无限循环 62
break与continue语句 65
嵌套循环 67
2.4 文件输入简介 67
通过ifstream读取文本文件内容 68
第3章 函数基础 81
3.1 预定义函数 82
带有返回值的预定义函数 82
预定义的void函数 86
随机数生成器 88
3.2 自定义函数 91
定义带有返回值的函数 91
函数声明的另一种形式 93
陷阱:参数顺序的错误 93
调用函数的函数 94
示例:一个四舍五入的函数 94
返回布尔值的函数 96
定义void函数 96
void函数中的return语句 98
前提条件和运行结果 98
main函数 100
递归函数 100
3.3 作用域规则 101
局部变量 101
过程抽象 103
全局常量和全局变量 104
语句块 106
嵌套作用域 107
提示:在分支和循环语句中使用函数调用 107
for循环体中的变量声明 107
第4章 函数与重载 117
4.1 参数 118
传值参数 118
初识引用参数 120
引用传递调用机制详解 122
常量引用参数 124
示例:函数swapValues 124
提示:一种操作,而不是代码 125
混合参数列表 126
提示:使用何种参数 126
陷阱:无意的局部变量 128
提示:选择形参的名字 129
示例:买比萨 129
4.2 重载与默认实参 132
重载简介 132
陷阱:自动类型转换与重载 134
重载解析的规则 135
示例:改写“买比萨程序” 136
默认参数 138
4.3 函数的测试和调试 140
assert宏 140
占位程序和驱动程序 141
第5章 数组 151
5.1 数组简介 152
数组的声明和引用 152
提示:对数组使用for循环 154
陷阱:数组的索引始终是从0开始的 154
提示:使用已定义的常量作为数组的大小 154
内存中的数组 155
陷阱:数组越界 157
数组的初始化 157
5.2 函数中的数组 159
索引变量作为函数实参 159
整个数组作为函数实参 160
const修饰符 163
陷阱:const参数的不一致使用 164
返回数组的函数 164
示例:生产图表 165
5.3 用数组编程 169
部分填充的数组 169
提示:不要吝啬形参的使用 169
示例:查询数组 172
示例:给数组排序 174
5.4 多维数组 178
多维数组基础 178
多维数组参数 179
示例:使用二维数组的记分程序 179
第6章 结构体和类 195
6.1 结构体 196
结构体类型 198
陷阱:漏掉结构体定义末尾的分号 200
结构体作为函数参数 201
提示:使用多重结构体 201
结构体的初始化 204
6.2 类 206
定义类和成员函数 206
封装 211
公有成员和私有成员 211
取值和赋值函数 214
提示:接口和实现的分离 216
提示:封装的测试 216
结构体与类 217
提示:对象思考 217
第7章 构造函数及其他工具 225
7.1 构造函数 226
构造函数的定义 226
陷阱:无参构造函数 230
构造函数的显式调用 230
提示:总是为类定义一个默认构造函数 231
示例:BankAccount类 233
类类型成员变量 238
7.2 其他工具 241
const修饰符 241
陷阱:const的不一致用法 243
内联函数 246
静态成员 248
嵌套类和局部类定义 251
7.3 向量——标准模板库预览 251
向量基础 252
陷阱:方括号的索引超过向量的大小 253
提示:向量的赋值 254
效率问题 255
第8章 运算符重载、友元和引用 263
8.1 基本运算符的重载 264
重载基础 264
提示:构造函数可以返回一个对象 269
返回常量类型 270
一元运算符的重载 272
作为成员函数的运算符重载 272
提示:类可以访问其所有对象 275
重载函数调用符( ) 275
陷阱:重载 &&、