第一部分C﹢﹢入门 2
第1章 编写第一个程序 2
1.1使用C﹢﹢ 2
1.2寻找编译器 3
1.3编译和链接源代码 5
1.4创建您的第一个程序 5
1.5总结 6
1.6问与答 7
1.7作业 7
1.7.1测验 7
1.7.2答案 8
1.7.3练习 8
第2章 程序的组成部分 9
2.1使用C﹢﹢的原因 9
2.1.1编程风格 10
2.1.2 C﹢﹢和面向对象编程 11
2.2程序的组成部分 12
2.2.1预处理器编译指令 12
2.2.2源代码行 13
2.3注释 13
2.4函数 14
2.5总结 16
2.6问与答 16
2.7作业 17
2.7.1测验 17
2.7.2答案 18
2.7.3练习 18
第3章 创建变量和常量 19
3.1变量是什么 19
3.1.1在内存中存储变量 20
3.1.2无符号变量和带符号变量 21
3.1.3变量类型 21
3.2定义变量 22
3.3给变量赋值 23
3.4使用类型定义 24
3.5常量 25
3.5.1定义常量 26
3.5.2枚举常量 26
3.6总结 26
3.7问与答 27
3.8作业 27
3.8.1测验 27
3.8.2答案 28
3.8.3练习 28
第4章 使用表达式、语句和运算符 29
4.1语句 29
4.1.1空白 29
4.1.2复合语句 30
4.2表达式 30
4.3运算符 31
4.3.1赋值运算符 31
4.3.2数学运算符 31
4.3.3组合运算符 32
4.3.4递增和递减运算符 32
4.3.5前缀运算符和后缀运算符 32
4.3.6运算符优先级 34
4.3.7关系运算符 36
4.4 if-else条件语句 36
4.4.1 else子句 37
4.4.2复合if语句 37
4.5逻辑运算符 39
4.5.1与运算符 39
4.5.2或运算符 39
4.5.3非运算符 39
4.5.4关系运算符和逻辑运算符的优先级 40
4.6棘手的表达式值 40
4.7总结 40
4.8问与答 41
4.9作业 41
4.9.1测验 41
4.9.2答案 42
4.9.3练习 42
第5章 调用函数 43
5.1函数是什么 43
5.2声明和定义函数 43
5.3在函数中使用变量 45
5.3.1局部变量 45
5.3.2全局变量 46
5.4函数参数 47
5.5从函数返回值 48
5.6默认函数参数 50
5.7函数重载 51
5.8总结 52
5.9问与答 53
5.10作业 53
5.10.1测验 53
5.10.2答案 54
5.10.3练习 54
第6章 控制程序流程 55
6.1循环 55
6.2 while循环 55
6.2.1退出循环 56
6.2.2跳到下一次循环 57
6.3 do-while循环 58
6.4 for循环 59
6.4.1高级for循环 61
6.4.2嵌套循环 61
6.5 switch语句 62
6.6总结 64
6.7问与答 64
6.8作业 65
6.8.1测验 65
6.8.2答案 65
6.8.3练习 66
第7章 使用数组和字符串存储信息 67
7.1数组是什么 67
7.2写入时超过数组末尾 69
7.3初始化数组 69
7.4多维数组 70
7.4.1初始化多维数组 71
7.4.2内存简介 72
7.5字符数组 72
7.6复制字符串 74
7.7总结 75
7.8问与答 75
7.9作业 75
7.9.1测验 75
7.9.2答案 76
7.9.3练习 76
第二部分类 78
第8章 创建基本类 78
8.1类型是什么 78
8.2创建新类型 78
8.3类和成员 79
8.3.1声明类 79
8.3.2创建对象 80
8.4访问类成员 80
8.5实现成员函数 81
8.6创建和删除对象 83
8.6.1默认构造函数 84
8.6.2编译器提供的构造函数 84
8.7总结 86
8.8问与答 87
8.9作业 87
8.9.1测验 87
8.9.2答案 87
8.93练习 88
第9章 高级类 89
9.1 const成员函数 89
9.2接口和实现 90
9.3组织类声明和函数定义 90
9.4内联实现 90
9.5将其他类用作成员数据的类 92
9.6总结 96
9.7问与答 96
9.8作业 96
9.8.1测验 96
9.8.2答案 97
9.8.3练习 97
第三部分 内存管理 100
第10章 创建指针 100
10.1理解指针及其用途 100
10.1.1在指针中存储地址 102
10.1.2间接运算符(间接地使用指针) 103
10.1.3指针、地址和变量 104
10.1.4使用指针操作数据 105
10.1.5查看存储在指针中的地址 105
10.1.6为何使用指针 107
10.2栈和堆 107
10.2.1使用关键字new 108
10.2.2使用关键字delete 109
10.2.3避免内存泄露 110
10.3总结 111
10.4问与答 111
10.5作业 111
10.5.1测验 111
10.5.2答案 112
10.5.3练习 112
第11章 开发高级指针 113
11.1在堆中创建对象 113
11.2删除对象 113
11.3使用指针访问数据成员 114
11.4堆中的数据成员 115
11.5 this指针 117
11.6悬摆指针 118
11.7 const指针 118
11.8 const指针和const成员函数 119
11.9总结 120
11.10问与答 121
11.11作业 121
11.11.1测验 121
11.11.2答案 121
11.11.3练习 122
第12章 创建引用 123
12.1什么是引用 123
12.2创建引用 123
12.3将地址运算符用于引用 124
12.4可引用的目标 126
12.5空指针和空引用 127
12.6按引用传递函数参数 127
12.6.1使用指针实现swap() 128
12.6.2使用引用实现swap() 129
12.7理解函数头和原型 130
12.8返回多个值 130
12.9总结 133
12.10问与答 133
12.11作业 133
12.11.1测验 133
12.11.2答案 134
12.11.3练习 134
第13章 高级引用和指针 135
13.1按引用传递以提高效率 135
13.2传递const指针 137
13.3作为指针替代品的引用 139
13.4什么情况下使用引用以及什么情况下使用指针 141
13.5不要返回不在作用域内的引用 141
13.6返回指向堆中对象的引用 142
13.7谁拥有指针 143
13.8总结 144
13.9问与答 144
13.10作业 144
13.10.1测验 144
13.10.2答案 145
13.10.3练习 145
第四部分 高级C﹢﹢ 148
第14章 高级函数 148
14.1重载成员函数 148
14.2使用默认值 150
14.3初始化对象 151
14.4复制构造函数 152
14.5总结 155
14.6问与答 155
14.7作业 155
14.7.1测验 156
14.7.2答案 156
14.7.3练习 156
第15章 运算符重载 157
15.1重载运算符 157
15.1.1编写递增方法 158
15.1.2重载后缀运算符 160
15.1.3重载加法运算符 161
15.1.4对运算符重载的限制 162
15.1.5赋值运算符 163
15.2转换运算符 165
15.3总结 167
15.4问与答 168
15.5作业 168
15.5.1测验 168
15.5.2答案 168
15.5.3练习 169
第五部分 继承和多态 172
第16章 使用继承扩展类 172
16.1什么是继承 172
16.1.1继承和派生 173
16.1.2动物和继承 173
16.1.3派生语法 173
16.2私有和保护 175
16.3构造函数和析构函数 176
16.4将参数传递给基类构造函数 178
16.5重写函数 181
16.5.1重载和重写 183
16.5.2隐藏基类方法 183
16.5.3调用基类方法 184
16.6总结 185
16.7问与答 185
16.8作业 185
16.8.1测验 186
16.8.2答案 186
16.8.3练习 186
第17章 使用多态和派生类 187
17.1使用虚函数实现多态 187
17.2虚成员函数的工作原理 190
17.2.1不能通过基类指针访问派生类特有的方法 191
17.2.2切除 191
17.2.3虚析构函数 193
17.2.4虚复制构造函数 193
17.2.5使用虚成员函数的代价 196
17.3总结 196
17.4问与答 196
17.5作业 196
17.5.1测验 196
17.5.2答案 197
17.5.3练习 197
第18章 使用高级多态 198
18.1单继承存在的问题 198
18.2抽象数据类型 201
18.2.1纯虚函数 203
18.2.2实现纯虚函数 204
18.2.3复杂的抽象层次结构 206
18.2.4哪些类是抽象的 209
18.3总结 210
18.4问与答 210
18.5作业 210
18.5.1测验 210
18.5.2答案 211
18.5.3练习 211
第19章 使用链表存储信息 212
19.1链表和其他结构 212
19.2链表案例研究 213
19.2.1委托 213
19.2.2链表的组成部分 213
19.3作为对象的链表 219
19.4总结 220
19.5问与答 220
19.6作业 220
19.6.1测验 221
19.6.2答案 221
19.6.3练习 221
第六部分 特殊主题 224
第20章 使用特殊的类、函数和指针 224
20.1静态成员数据 224
20.2静态成员函数 226
20.3将其他类对象作为成员 227
20.3.1访问被包含类的成员 231
20.3.2禁止访问包含类的成员 232
20.3.3按引用还是按值复制 232
20.4友元类和友元函数 232
20.5函数指针 233
20.5.1函数指针数组 235
20.5.2将函数指针传递给其他函数 237
20.5.3将typedef用于函数指针 239
20.5.4成员函数指针 239
20.5.5成员函数指针数组 241
20.6总结 242
20.7问与答 243
20.8作业 243
20.8.1问与答 243
20.8.2答案 244
20.8.3练习 244
第21章 使用C﹢﹢Ox新增的功能 245
21.1下一版C﹢﹢ 245
21.2空指针常量 245
21.3编译阶段常量表达式 247
21.4自动确定类型的变量 248
21.5新的for循环 250
21.6总结 250
21.7问与答 251
21.8作业 251
21.8.1测验 251
21.8.2答案 252
21.8.3练习 252
第22章 面向对象分析和设计 253
22.1开发周期 253
22.2模拟报警系统 253
22.2.1概念化 254
22.2.2分析和需求 254
22.2.3高级设计和详细设计 254
22.2.4其他对象 255
22.2.5设计类 255
22.2.6添加其他类 256
22.2.7事件循环 256
22.3案例研究 258
22.3.1三思而后行 259
22.3.2分而治之 259
22.3.3邮件格式 259
22.3.4初步类设计 260
22.3.5同根和不同根 261
22.3.6设计接口 262
22.3.7建立原型 263
22.3.8 80/80规则 263
22.3.9设计PostMasterMessage类 264
22.3.10应用程序编程接口 264
22.3.11小组编程 265
22.3.12需要不断考虑的设计因素 265
22.3.13使用驱动程序 266
22.4总结 271
22.5问与答 271
22.6作业 272
22.6.1测验 272
22.6.2答案 272
22.6.3练习 272
第23章 创建模板 273
23.1什么是模板 273
23.2模板实例 273
23.3模板的定义 274
23.4使用模板实例 279
23.5总结 283
23.6问与答 284
23.7作业 284
23.7.1测验 284
23.7.2答案 284
23.7.3练习 285
第24章 处理异常和错误 286
24.1程序中的各种错误 286
24.2处理意外情况 287
24.3异常 287
24.4使用try块和catch块 290
24.4.1捕获异常 291
24.4.2使用多条catch语句 291
24.4.3使用引用以多态方式捕获异常 291
24.5编写专业级代码 295
24.5.1大括号 295
24.5.2长代码行 295
24.5.3switch语句 296
24.5.4程序文本 296
24.5.5标识符命名 297
24.5.6名称的拼写和大写 297
24.5.7注释 297
24.5.8设置访问权限 298
24.5.9类定义 298
24.5.10包含文件 298
24.5.11使用const 298
24.6总结 299
24.7问与答 299
24.8作业 299
24.8.1测验 299
24.8.2答案 300
24.8.3练习 300
第七部分 附录 302
附录A二进制和十六进制 302
A.1其他进制 302
A.2不同进制之间的转换 303
A.2.1二进制 304
A.2.2为什么使用二进制 304
A.2.3位、字节和半字节 304
A.2.4什么是KB 305
A.2.5二进制数 305
A.3十六进制 305
附录B 术语表 308
附录C配套网站 314