第1部分 C++基础知识 1
第1章 C++简介 1
1.1 C程序与C++程序的简单比较 1
1.2 C++程序的构成与书写格式 3
1.3 如何运行一个C++程序 8
1.4 习题 14
第2章 基本数据类型 16
2.1 数据在计算机中的表示 16
2.1.1 计算机记数法 16
2.1.2 计算机中数的表示 21
2.2 常量 28
2.3 变量及其定义 30
2.4 符号常量的定义 35
2.5 习题 36
第3章 运算符与表达式 37
3.1 赋值运算 37
3.2 算术运算符与算术表达式 37
3.3 关系运算符与关系表达式 39
3.4 逻辑运算符与逻辑表达式 40
3.5 其他运算符 42
3.6 表达式求值顺序的讨论 45
3.7 习题 48
第4章 基本的输入与输出 51
4.1 输入流与输出流操作 51
4.2 putchar与getchar函数 52
4.3 printf与scanf函数 54
4.4 习题 56
第5章 结构化程序的三种基本结构 57
5.1 程序设计的基本过程 57
第2部分 C++面向过程的程序设计 57
5.2 流程图 61
5.2.1 传统流程图 61
5.2.2 结构化流程图 62
5.3 选择结构程序设计 63
5.3.1 语句与复合语句 64
5.3.2 if语句 67
5.3.3 if…else结构 70
5.3.4 条件运算符 74
5.3.5 switch结构 76
5.4.1 当型循环与直到型循环 83
5.4 循环结构程序设计 83
5.4.2 while语句 84
5.4.3 do-while语句 86
5.4.4 for语句 87
5.4.5 循环的嵌套与其他有关语句 89
5.5 算法举例 94
5.5.1 列举与试探 94
5.5.2 密码问题 98
5.6 习题 99
第6章 编译预处理 103
6.1 宏定义 103
6.1.1 标识符定义 103
6.1.2 带参数的宏定义 104
6.2 文件包含命令 108
6.3 条件编译命令 109
第7章 函数 116
7.1 模块化程序设计的基本概念 116
7.2 函数的定义 117
7.3 函数的调用 119
7.4 函数间的参数传递 121
7.4.1 形参与实参的结合方式 121
7.4.2 局部变量与全局变量 124
7.4.3 动态存储变量与静态存储变量 126
7.5 内联函数 128
7.6 函数的重载与函数模板 130
7.6.1 函数的重载 130
7.6.2 函数模板 132
7.7 默认参数的函数调用 133
7.8 函数的递归调用 135
7.9 习题 139
第8章 数组 141
8.1 数组的基本概念 141
8.2 数组的定义与引用 143
8.2.1 一维数组 144
8.2.2 二维数组 145
8.2.3 数组的初始化 145
8.3 字符数组与字符串 148
8.3.1 字符数组的定义与初始化 148
8.3.2 字符串 149
8.3.3 字符数组与字符串的输入与输出 150
8.3.4 字符串处理函数 152
8.3.5 字符串变量 154
8.4 数组作为函数参数 157
8.4.1 形参数组与实参数组的结合 157
8.4.2 二维数组作为函数参数 160
8.5 排序与查找 163
8.5.1 有序表的二分查找 163
8.5.2 冒泡排序 164
8.5.3 选择排序 165
8.5.4 插入排序 166
8.6 习题 167
9.1 指针变量 169
9.1.1 指针的基本概念 169
第9章 指针 169
9.1.2 指针变量的定义 170
9.1.3 指针变量作为函数参数 172
9.1.4 指向指针的指针 175
9.2 指针数组 176
9.3 数组与指针 177
9.3.1 一维数组与指针 177
9.3.2 二维数组与指针 180
9.3.3 数组指针作为函数参数 182
9.4 字符串与指针 185
9.5 函数与指针 188
9.5.1 用函数指针变量调用函数 188
9.5.2 函数指针变量作为函数参数 190
9.6.1 引用的基本概念 192
9.5.3 返回指针值的函数 192
9.6 引用 192
9.6.2 引用作为函数参数 194
9.7 习题 195
第10章 自定义数据类型 198
10.1 结构体类型 198
10.1.1 结构体类型变量 198
10.1.2 结构体与函数 204
10.1.3 结构体数组 207
10.1.4 结构体与指针 212
10.2 链表 216
10.2.1 链表的基本概念 216
10.2.2 链表的基本运算 219
10.2.3 多项式的表示与运算 222
10.3 联合体 227
10.4 枚举类型 228
10.5 自定义类型名 231
10.6 习题 232
第11章 位运算 235
11.1 二进制位运算 235
11.2 位段 240
11.3 习题 243
第3部分 C++面向对象的程序设计 245
第12章 类与对象 245
12.1 面向对象程序设计概述 245
12.2.1 结构体类型与类 246
12.2 类的声明与对象的定义 246
12.2.2 类的声明 249
12.2.3 对象的定义 251
12.2.4 对象中数据成员的访问 253
12.2.5 成员函数的调用 255
12.2.6 在类外定义成员函数 256
12.2.7 C++程序的结构 258
12.2.8 程序举例 260
12.3 构造函数与析构函数 264
12.3.1 构造函数 264
12.3.2 用参数初始化表对数据成员初始化 272
12.3.3 析构函数 272
12.4.1 对象的赋值 274
12.4 对象的赋值与复制 274
12.4.2 对象的复制与复制构造函数 275
12.5 对象数组与对象指针 279
12.5.1 对象数组 279
12.5.2 对象指针 281
12.5.3 this指针 283
12.6 共享数据的保护 284
12.6.1 常对象 284
12.6.2 const修饰的类成员 286
12.6.3 对象的常指针与常引用 290
12.7 类的静态成员 291
12.7.1 静态数据成员 291
12.7.2 静态成员函数 296
12.8.1 友元函数 297
12.8 类的友元 297
12.8.2 友元类 301
12.9 类模板 301
12.10 习题 304
第13章 继承与派生 307
13.1 继承与派生的基本概念 307
13.2 派生类的声明 309
13.3 派生类成员的访问控制 311
13.4 派生类的构造函数与析构函数 315
13.4.1 派生类的构造函数 315
13.4.2 派生类的析构函数 320
13.5 多重继承 320
13.5.1 多重继承的概念 320
13.5.2 虚基类 323
13.6 习题 326
第14章 多态性 328
14.1 什么叫多态性 328
14.2 运算符重载 328
14.2.1 运算符重载的基本概念 328
14.2.2 运算符重载的方法 330
14.2.3 运算符重载的规则 332
14.2.4 运算符重载实例 333
14.3 虚函数 340
14.3.1 问题的提出 340
14.3.2 虚函数的声明 343
14.3.3 虚析构函数 345
14.4.2 抽象类 346
14.4 纯虚函数与抽象类 346
14.4.1 纯虚函数 346
14.5 习题 348
第15章 流类库与输入/输出 349
15.1 流类库的基本概念 349
15.2 标准输入流与输出流 350
15.2.1 用流对象进行输入/输出 350
15.2.2 用输出流对象的成员函数进行输出 351
15.2.3 用输入流对象的成员函数进行输入 352
15.3 文件流类与文件操作 353
15.3.1 文件流对象 353
15.3.2 文件的打开与关闭 354
15.3.3 文件的读写操作 356
15.3.4 文件的定位 360
15.4 习题 362
第16章 命名空间 363
16.1 命名空间的声明与使用 363
16.1.1 命名空间的概念 363
16.1.2 使用命名空间解决名字冲突 366
16.1.3 使用命名空间成员的方法 368
16.1.4 无名的命名空间 370
16.2 标准命名空间 370
附录 372
附录A 基本ASCII码表 372
附录B 常用库函数 373
参考文献 378