第1章 绪论 1
1.1 C+++语言的发展和特点 1
1.2 面向对象的程序设计 2
1.2.1 抽象和封装——对象 2
1.2.2 派生和继承 3
1.2.3 多态性 3
1.3 C+++程序的结构 3
1.4 基本的输入/输出 4
1.5 C+++程序的开发步骤 6
习题 7
第2章 数据和表达式 9
2.1 C+++的词法符号 9
2.1.1 关键字 9
2.1.2 标识符 9
2.1.3 标点符号 10
2.1.4 分隔符 10
2.2 基本数据类型 10
2.3 常量 12
2.3.1 数值常量 12
2.3.2 字符常量 12
2.3.3 字符串常量 13
2.4 变量及其说明 14
2.5 基本运算符和表达式 15
2.5.1 基本运算符 15
2.5.2 表达式 19
2.6 赋值表达式和类型转换 20
2.6.1 赋值表达式 20
2.6.2 增量减量运算符 21
2.6.3 复合赋值运算符 22
2.6.4 表达式中的类型转换 22
2.6.5 强制类型转换(cast) 23
2.7 简单变量的初始化 23
2.7.1 变量的初始化 23
2.7.2 const和volatile修饰符 24
习题 25
第3章 程序控制语句 26
3.1 C+++语言的语句 26
3.1.1 C+++语句的基本形式 26
3.1.2 块语句 26
3.2 选择语句 27
3.2.1 if语句 27
3.2.2 if语句的嵌套 29
3.2.3 三元条件表达式 29
3.2.4 switch语句 30
3.2.5 if语句和switch语句的比较 33
3.3 循环语句 33
3.3.1 while语句 34
3.3.2 do...while语句 35
3.3.3 for语句 35
3.3.4 三种循环语句的比较 38
3.3.5 循环的嵌套 38
3.4 循环的中断 39
3.4.1 break语句 39
3.4.2 continue语句 40
3.4.3 exit()函数和abort()函数 41
3.4.4 补充说明 42
3.5 goto语句与标号 43
习题 44
第4章 函数 45
4.1 函数 45
4.1.1 定义函数 45
4.1.2 函数的调用 46
4.2 函数间的数据传递 46
4.2.1 函数的参数和返回值 46
4.2.2 函数原型 49
4.2.3 函数的值调用 50
4.3 C+++的库函数 50
4.4 作用域和存储类 51
4.4.1 作用域 51
4.4.2 存储类 54
4.5 函数的递归调用 58
4.6 内联函数 61
4.7 带有缺省参数的函数 62
4.8 参数数目可变的函数 64
4.9 函数重载 65
4.10 编译预处理 67
4.10.1 嵌入指令 67
4.10.2 宏定义 68
4.10.3 条件编译指令 71
4.11 程序的多文件组织 73
4.11.1 连接属性 73
4.11.2 分割编译 75
习题 75
第5章 数组和字符串 77
5.1 数组 77
5.1.1 一维数组 77
5.1.2 多维数组 79
5.1.3 数级间的赋值 81
5.1.4 数组与函数 82
5.2 字符串 84
5.2.1 字符串的存储形式 84
5.2.2 字符串数组 85
5.2.3 字符串间的赋值 85
5.2.4 字符串与函数 86
5.3 字符串处理库函数 87
习题 89
第6章 指针和引用 90
6.1 指针 90
6.1.1 指针概念 90
6.1.2 指针的说明 90
6.1.3 对指针的访问 91
6.1.4 指针的运算 92
6.1.5 多级指针 94
6.2 指针与数组 95
6.2.1 用指针访问数组元素 95
6.2.2 指针与字符串 97
6.2.3 指针数组 97
6.3 指针与函数 100
6.3.1 指针作为函数的参数 100
6.3.2 返回指针的函数 104
6.3.3 带参数的main()函数和命令行参数 106
6.3.4 指向函数的指针 109
6.4 指针和动态内存分配 113
6.5 引用 116
6.5.1 引用的说明与使用 116
6.5.2 引用与函数 118
6.6 void和const型指针 120
6.6.1 void型指针 120
6.6.2 const型指针 122
习题 123
第7章 结构、联合和枚举 125
7.1 结构 125
7.1.1 结构类型说明 125
7.1.2 结构变量的说明 126
7.1.3 结构变量的访问 127
7.1.4 结构变量成员 128
7.2 结构与数组和指针 129
7.2.1 结构数组 129
7.2.2 结构指针 131
7.3 结构与函数 132
7.4 位域 138
7.5 联合 140
7.5.1 联合类型说明 140
7.5.2 联合的使用 141
7.6 枚举 142
7.6.1 枚举类型及其变量的说明 142
7.6.2 枚举变量的使用 143
7.7 类型定义 147
习题 148
第8章 类和对象 149
8.1 概述 149
8.2 类 149
8.2.1 类的说明 150
8.2.2 类与结构 152
8.2.3 内联成员函数 153
8.3 对象 154
8.3.1 对象的说明 154
8.3.2 对象的使用 155
8.3.3 类作用域 157
8.4 成员函数的重载 158
8.5 this指针 160
习题 161
第9章 构造函数和析构函数 162
9.1 构造函数(Constructor) 162
9.1.1 定义构造函数 162
9.1.2 构造函数与对象初始化 163
9.1.3 构造函数和new运算符 164
9.1.4 缺省的构造函数 165
9.2 析构函数(Destructor) 167
9.2.1 定义析构函数 167
9.2.2 析构函数和delete运算符 168
9.2.3 缺省的析构函数 169
9.3 拷贝初始化构造函数 171
9.4 构造函数与对象成员 175
习题 180
第10章 继承和派生类 181
10.1 继承 181
10.1.1 单一继承 182
10.1.2 多重继承 186
10.2 初始化基类成员 188
10.3 二义性、支配规则和赋值兼容规则 193
10.3.1 二义性 193
10.3.2 支配规则 195
10.3.3 使用继承和使用对象成员 196
10.3.4 赋值兼容规则 196
10.4 虚基类 197
习题 202
第11章 类的其他特性 204
11.1 友元函数 204
11.1.1 友元函数的说明 204
11.1.2 友元函数的使用 205
11.1.3 将成员函数用作友元 205
11.2 虚函数 208
11.2.1 虚函数 208
11.2.2 纯虚函数 210
11.3 静态成员 217
11.3.1 静态数据成员 217
11.3.2 静态成员函数 218
11.4 const,volatile对象和const,volatile成员函数 220
11.5 指向类成员的指针 224
习题 227
第12章 运算符重载 228
12.1 运算符重载 228
12.1.1 重载运算符 228
12.1.2 使用重载了的运算符 230
12.1.3 友元运算符 231
12.1.4 转换函数 233
12.1.5 类的赋值运算与运算符重载 235
12.2 几个特殊运算符的重载 236
12.2.1 增量减量运算符 236
12.2.2 下标运算符 239
12.2.3 函数调用运算符 242
12.2.4 成员选择运算符 244
12.2.5 new和delete运算符 245
12.3 一个字符串类 248
12.3.1 说明字符串类 248
12.3.2 使用字符串类的演示程序 251
习题 252
第13章 C+++语言的I/O流类 253
13.1 概述 253
13.1.1 流(Stream) 253
13.1.2 文件 253
13.1.3 缓冲 254
13.2 C+++的基本流类体系 254
13.2.1 基本流类体系 254
13.2.2 预定义的流及流运算符 255
13.2.3 流的格式控制 257
13.2.4 流的错误处理 263
13.3 输入和输出 265
13.3.1 格式化输入 266
13.3.2 输入操作函数 267
13.3.3 格式化输出 270
13.3.4 输出操作函数 270
13.3.5 重载提取和插入运算符 272
13.4 用户自定义操纵算子 273
13.4.1 定义无参操纵算子 273
13.4.2 定义带参操纵算子 275
13.5 文件流 277
13.5.1 C+++的文件流类体系 278
13.5.2 文件的打开与关闭 278
13.5.3 文件的访问 280
13.5.4 几个主要用于文件流的函数 282
13.6 RAM流 286
13.6.1 C+++的RAM流类体系 286
13.6.2 使用RAM流 286
13.6.3 两个专门用于RAM流的函数 287
习题 289
附录A 关键字asm 290
附录B ASCII码表 291
参考文献 292