第一章 面向对象入门 1
1.1 什么是对象 2
1.2 面向对象的语言的必要性 4
1.2.1 各种各样的语言与面向对象 4
1.2.2 软件工程学与面向对象的语言 7
1.3 面向对象的基本概念 10
1.3.1 面向对象的语言的基本要素 10
1.3.2 类与对象 11
1.3.3 类的层次与继承 13
第二章 C语言的基本要素 15
2.1.1 C语言的诞生 16
2.1.2 C语言的特点 16
2.1 C语言 16
2.2 简单的示范程序 17
2.3 术语与数据 20
2.3.1 命名规则 21
2.3.2 C语言中的注释 22
2.3.3 信息的存储格式 22
2.3.4 数据的类型 22
2.3.5 常数 26
2.3.6 字符串 28
2.3.7 数据的定义与初始化 29
2.4 表达式与运算符 30
2.4.1 表达式 30
2.4.2 算术运算符 31
2.4.3 算术运算中的类型转换 31
2.4.4 关系运算符 32
2.4.5 逻辑运算符 34
2.4.6 位运算符 35
2.4.7 赋值运算符 38
2.4.8 条件运算符 39
2.4.9 其它运算符 39
2.4.10 运算符的优先级 42
2.4.11 语句 44
2.5 预处理器与库函数简介 44
2.5.1 预处理器 44
2.5.2 标准输入输出库函数 46
2.5.3 文件的存取 53
第三章 C语言的语法规则 56
3.1 单位转换表的设计 57
3.2 条件判断 60
3.2.1 if...else语句 60
3.2.2 switch语句 62
3.3 循环处理 63
3.3.1 while语句 64
3.3.2 for语句 65
3.3.3 do-while语句 67
3.4 转移 67
3.4.1 break语句 68
3.4.2 continue语句 68
3.4.3 goto语句 69
3.5 求阶乘的函数 69
3.6.1 函数的写法 71
3.6 函数 71
3.6.2 return语句 72
3.6.3 函数的调用 73
3.6.4 传统写法 74
3.6.5 个数可变的参数 75
3.6.6 函数的调用过程 75
3.7 变量与函数的存储类别 76
3.7.1 自动变量 76
3.7.2 静态变量 77
3.7.3 外部变量 78
3.7.4 寄存器变量 80
3.7.5 递归调用 80
3.7.6 函数的存储类别 82
第四章 C语言的数据结构 84
4.1 数组 85
4.1.1 一维数组 85
4.1.2 多维数组 88
4.2 指针 90
4.2.1 取地址运算符与间接访问运算符 90
4.2.2 指针与数组 94
4.2.3 指针的运算 96
4.2.4 指向数组的指针 100
4.2.5 指针数组 101
4.2.6 函数与指针 102
4.2.7 指向函数的指针 105
4.2.8 从命令行中取参数 106
4.2.9 指针变量与const说明 107
4.3.1 结构的定义 108
4.3 结构 108
4.3.2 typedef 110
4.3.3 结构的用法 111
4.3.4 结构的初始化 113
4.3.5 位域 115
4.4 联合 116
4.5 枚举类型 117
4.6 复杂说明的读法 118
第五章 C++入门 121
5.2 C++的新功能(作为面向过程的语言) 122
5.2.1 基本风格 122
5.1 引 122
5.2.2 类型 126
5.2.3 函数 131
5.3 C++的新功能(作为面向对象的语言) 134
5.3.1 对象与消息 134
5.3.2 类及其构成方法 135
5.3.3 类的层次与继承 139
5.4 输入输出类 140
5.4.1 简单的例题 141
5.4.2 如何使用C++ 142
第六章 类的构成 145
6.1 类与抽象数据类型 146
6.1.1 什么是类 146
6.1.2 抽象数据类型 147
6.2 类的基本内容 149
6.2.1 数据成员 149
6.2.2 成员函数 152
6.2.3 建立一个类——Turtle 155
6.3 信息隐蔽 159
6.3.1 可公开的信息与非公开的信息 160
6.3.2 建立一个类——Stack 163
6.3.3 friend 167
6.4 对象的生成与撤销 168
6.4.1 初建函数——constructor 168
6.4.2 撤销函数——destructor 174
6.4.3 建立一个类——String 176
第七章 运算符函数 181
7.1 什么是运算符函数 182
7.2 基本的运算符函数 182
7.2.1 二元运算符函数 183
7.2.2 一元运算符函数 187
7.2.3 建立一个类——Fraction 190
7.3 运算符函数的规则 194
7.3.1 运算符的分类 195
7.3.2 对运算符函数的限制 197
7.3.3 定义运算符函数时的注意事项 199
7.4 赋值运算符 200
7.4.1 赋值运算符函数的定义方法 201
7.4.2 赋值运算符函数的必要性 202
7.5.1 数组与运算符函数 205
7.5 数组运算符 205
7.5.2 联想数组 206
7.6 函数调用运算符 209
7.6.1 定义的方法 209
7.7 特殊的运算符函数 210
7.7.1 增量运算符函数和减量运算符函数 210
7.7.2 类型变换运算符函数 212
7.8 输入与输出 213
7.8.1 iostream库 213
7.8.2 基本数据类型的输入输出 214
7.8.3 用户自定义类型的输入输出 214
第八章 类的各种性质 219
8.1.1 什么是类型转换 220
8.1 类型转换 220
8.1.2 从其它类型转向本类型的类型转换 222
8.1.3 从本类型转向其它类型的类型转换 223
8.1.4 类型转换的得与失 226
8.2 仿建函数——copy constructor 228
8.2.1 仿建函数的定义方法 228
8.2.2 仿建函数的调用时机 229
8.2.3 仿建函数的必要性 232
8.3 friend 235
8.3.1 什么是friend? 235
8.3.2 friend的说明方法 235
8.3.3 friend的必要性 237
8.4.1 inline函数 239
8.4 几个话题 239
8.4.2 静态成员 242
8.4.3 自我引用 251
8.5 各种各样的对象 254
8.5.1 作为成员的对象 254
8.5.2 对象数组 259
8.5.3 静态对象 260
8.6 指向成员的指针 261
8.6.1 什么是指向成员的指针 261
8.6.2 如何使用指向成员的指针 262
8.7 类的嵌套 263
8.7.1 什么是类的嵌套 263
8.7.2 嵌套的类中的成员修饰符 265
8.8 多重定义的规则 266
8.8.1 概要 266
8.8.2 参数的匹配 267
第九章 类的层次结构与继承 271
9.1 派生类 272
9.1.1 派生类的继承 272
9.1.2 例题——以Card类为基类建立类的层次结构 274
9.1.3 类的多重层次 280
9.1.4 对基类成员进行访问时的限制 282
9.1.5 类的层次结构中的成员名的作用域 287
9.1.6 派生类变量的生成与撤销 292
9.1.7 派生类的指针与类型转换 293
9.2.1 什么是虚函数 295
9.2 由虚函数实现的动态连接 295
9.2.2 由完成数据统计的类构成的层次结构 297
9.2.3 由虚函数实现的动态连接 300
9.2.4 与虚函数和重定义有关的规则 303
9.3 抽象类 305
9.3.1 纯虚函数与抽象类 305
9.3.2 监测系统与传感器 309
9.4 继承的种类与类的层次构造 313
9.5 多重继承 314
9.5.1 类的层次结构与多重继承 315
9.5.2 多重继承与不确定因素 316
9.5.3 多次以同一个类作为基类的情况 318
9.5.4 多重继承与虚基类 320
9.5.5 多重继承的例题 321
第十章 例题 327
10.1 具有计量单位处理能力的计算器 328
10.1.1 概要 328
10.1.2 程序结构的说明 328
10.1.3 计算器的设计 329
10.1.4 处理单位的追加方法 340
10.1.5 其它类的定义 340
10.2 字符串查找程序 345
附录 351
A.1 预处理器 351
A.2 ANSIC标准库函数 355
A.3 C++iostream库函数 379
参考文献 383
索引 383