第1章 C++语言概述 1
1.1 C++语言的起源和特点 1
1.2面向对象的基本概念 2
1.3 C++对面向对象程序设计的支持 3
1.4 C++语言与C语言的关系 4
1.4.1 C++语言与C语言的主要区别 4
1.4.2 C++语言与C语言的细小区别 5
1.5面向对象程序设计的意义 6
1.6简单的C++程序实例 8
1.7 C++程序的编辑、编译和运行 10
1.7.1程序的编辑 10
1.7.2程序的编译与连接 11
1.7.3程序的运行 12
1.7.4调试程序错误 13
小结 13
练习题 14
第2章 基本数据类型与表达式 17
2.1标识符 17
2.2数据类型的初步知识 18
2.2.1基本数据类型 18
2.2.2复合数据类型 19
2.3常量 19
2.3.1整型常量 19
2.3.2浮点数常量 19
2.3.3字符常量 20
2.3.4枚举常量 20
2.4变量 21
2.5运算符 22
2.5.1算术运算符 22
2.5.2等值、关系和逻辑运算符 23
2.5.3赋值运算符 24
2.5.4自增、自减运算符 25
2.5.5 sizeof运算符 26
2.5.6条件运算符 26
2.5.7位运算符 27
2.5.8类型转换 28
2.5.9逗号运算符 31
2.6表达式 31
2.7运算符优先级和结合性 32
2.8求值次序与副作用 33
小结 34
练习题 35
第3章 控制语句 39
3.1条件语句 40
3.2多分支的选择语句 43
3.3循环语句 45
3.3.1 while语句 45
3.3.2 do-while语句 47
3.3.3 for语句 48
3.3.4用if语句和goto语句构成的循环语句 49
3.3.5循环嵌套 50
3.4转向语句 52
3.4.1 break语句 52
3.4.2 continue语句 52
3.5程序举例 53
3.6对输入/输出的初步认识 58
3.6.1 I/O的书写格式 58
3.6.2控制符的使用 60
3.6.3 printf()和scanf() 65
3.7关于注释的一些说明 68
3.8预处理 70
3.8.1文件包含预处理指令#include 70
3.8.2条件预处理指令 71
3.8.3宏替换指令#define 72
小结 73
练习题 73
第4章 数组 78
4.1一维数组 78
4.1.1一维数组的定义 78
4.1.2一维数组的引用 79
4.1.3一维数组初始化 79
4.1.4一维数组的程序举例 82
4.2多维数组 84
4.2.1多维数组的定义 84
4.2.2多维数组的初始化 85
4.2.3多维数组的引用 87
4.2.4多维数组程序举例 88
4.3字符数组与字符串的处理 89
4.3.1字符数组的定义和初始化 89
4.3.2字符数组的输入输出 90
4.3.3字符串 91
4.4字符数组程序举例 93
4.5数组应用 96
4.5.1排序 96
4.5.2 Josephus问题 97
4.5.3矩阵乘法 99
小结 100
练习题 100
第5章 函数 101
5.1函数的定义 101
5.1.1无参函数的定义 101
5.1.2有参函数的定义 102
5.2函数的调用 102
5.3函数递归调用 104
5.4数组作为函数的参数 106
5.4.1数组传递给标准库函数 106
5.4.2数组传递给自定义函数 106
5.4.3数组作为参数传递给函数 107
5.5局部变量和全局变量 108
5.5.1局部变量 108
5.5.2静态局部变量 108
5.5.3全局变量 110
5.6变量的存储类型 110
5.6.1外部存储类型 110
5.6.2静态存储类型 112
5.6.3作用域 116
5.6.4可见性 120
5.6.5生命期 122
5.7内联函数 123
5.8函数重载 124
5.8.1为什么要重载函数名 125
5.8.2如何重载一个函数名 125
5.8.3不适于用函数名重载的情况 126
5.8.4有关重载函数的调用问题 127
5.8.5重载与作用域 128
5.8.6重载符new 129
5.9默认参数的函数 129
5.9.1默认参数的目的 129
5.9.2默认参数的使用 129
5.9.3默认参数的顺序规定 130
5.9.4默认参数与函数重载 130
5.9.5默认值的限定 130
5.10函数程序实例 131
5.11如何运行一个多文件程序 138
5.11.1头文件 138
5.11.2多文件结构 140
小结 141
练习题 142
第6章 指针 146
6.1指针的类型及其定义 146
6.1.1内存空间的访问方式 146
6.1.2指针类型 147
6.1.3定义指针变量 147
6.2指针的初始化 147
6.2.1指针的初始化 147
6.2.2指针运算 149
6.3指针与数组 149
6.4堆内存分配(动态数组与指针) 151
6.4.1堆内存 151
6.4.2 new和delete 153
6.5 const指针 154
6.5.1指向常量的指针 154
6.5.2指针常量 156
6.5.3指向常量的指针常量 156
6.6指针与函数 157
6.6.1传递数组的指针性质 157
6.6.2使用指针修改函数参数 157
6.6.3指针函数 159
6.6.4 void指针 160
6.7字符串指针 161
6.8指针数组 164
6.8.1指针数组的定义 164
6.8.2指针数组与二维数组 164
6.8.3指向指针的指针 165
6.8.4 NULL指针值 166
6.9命令行参数 167
6.9.1命令行参数的概念 167
6.9.2打印命令行参数 167
6.9.3命令行参数使用形式 168
6.9.4 main()函数的返回 168
6.10函数指针 169
6.10.1函数指针定义 169
6.10.2函数指针的内在差别 169
6.10.3通过函数指针来调用函数 170
6.10.4用typedef来简化指针 170
6.10.5函数指针构成指针数组 171
6.10.6函数的返回类型可以是函数指针 171
小结 172
练习题 172
第7章 结构 174
7.1结构 174
7.1.1结构的概念 174
7.1.2访问结构成员 175
7.1.3给结构赋值 176
7.2结构与指针 177
7.3结构与数组 179
7.4传递结构参数 182
7.4.1传递结构值 182
7.4.2传递结构的引用 183
7.5返回结构 184
7.5.1返回结构 184
7.5.2返回结构的引用 187
7.6链表结构 188
7.6.1结构的嵌套 188
7.6.2遍历结构变量的问题 188
7.6.3链表结构 189
7.7创建与遍历链表 190
7.8删除链表结点 193
7.9插入链表结点 195
小结 197
练习题 198
第8章 类和对象 199
8.1定义类 199
8.1.1说明类 199
8.1.2类标识符 201
8.1.3类体 201
8.2使用类和对象 202
8.2.1对象说明 202
8.2.2数据封装 204
8.3内联的成员函数 206
8.4成员函数的重载及其默认参数 208
8.5 this指针 209
8.6结构和联合 210
8.6.1使用结构定义类 210
8.6.2使用联合定义类 211
8.7有关类的其他知识 211
8.7.1类作用域 211
8.7.2空类 213
8.7.3类对象的性质及存取 214
8.7.4嵌套类 214
8.7.5类的实例化 215
8.8构造函数与析构函数 215
8.8.1构造函数 216
8.8.2析构函数 219
8.8.3构造函数类型转换 223
8.8.4对象的初始化 225
8.8.5对象赋值 228
8.8.6对象成员 231
小结 233
练习题 234
第9章 继承和多态 240
9.1类的继承 240
9.2单一继承 241
9.3多重继承 242
9.4多态性和虚函数 244
9.4.1多态性 245
9.4.2虚函数 248
9.4.3虚函数的多态性 258
9.4.4虚析构函数 260
9.5类的应用示例 261
小结 265
练习题 266
第10章 特殊成员函数 272
10.1静态成员 272
10.2友元函数 276
10.2.1将成员函数用做友元 277
10.2.2一个类说明为另一个类的友元 278
10.2.3友元和派生类 278
10.3 const对象和volatile对象 279
10.3.1返回对象 279
10.3.2使用带有this指针的成员函数 280
10.3.3同时定义const和volatile成员函数 281
10.3.4使用实例 281
10.4转换函数 283
10.5指向类成员的指针 285
10.5.1指向类数据成员的指针 285
10.5.2指向成员函数的指针 286
10.6数组与类 289
小结 291
练习题 291
第11章 运算符重载 295
11.1运算符重载 295
11.2如何重载运算符 297
11.3值返回与引用返回 299
11.4运算符作成员函数 301
11.5重载增量运算符 304
11.5.1前增量与后增量的区别 304
11.5.2成员形式的重载 304
11.5.3非成员形式重载 306
11.6转换运算符 307
11.7赋值运算符 309
11.7.1为什么要赋值运算符 309
11.7.2如何重载赋值运算符 310
小结 312
练习题 313
第12章 I/O流 314
12.1 I/O标准流类 314
12.1.1标准流的设备名 314
12.1.2原理 314
12.2文件流类 315
12.3串流类 317
12.4控制符 319
12.4.1用流对象的成员函数 319
12.4.2控制符 319
12.5使用I/O成员函数 322
12.5.1用getline()读取输入行 322
12.5.2用get()读取一个字符 323
12.5.3用get()输入一系列字符 324
12.5.4输出一个字符 325
小结 326
练习题 326
第13章 模板 327
13.1模板的概念 327
13.2函数模板 328
13.3重载模板函数 330
13.4类模板的定义 330
13.5使用类模板 333
小结 335
练习题 335
第14章 异常处理 336
14.1异常的概念 336
14.2异常的实现 337
14.3异常的规则 340
14.4异常处理机制 342
14.5使用异常的方法 344
小结 346
练习题 346
第15章 面向对象的程序设计 347
15.1面向对象的设计 347
15.1.1类的确定 347
15.1.2面向对象的设计方法 348
15.2改变思维方式更好理解面向对象的程序设计 350
15.2.1更好的从C过渡到C++ 350
15.2.2对象支持 353
15.3类设计的注意事项 364
15.3.1概述 364
15.3.2说明类的几点建议 365
15.4继承和面向对象设计 366
小结 367
参考文献 368