第1章 面向对象程序设计概述 1
1-1 什么是面向对象程序设计 2
1-1-1 新的程序设计范型 2
1-1-2 面向对象程序设计的基本概念 2
1-1-3 面向对象程序设计的基本特征 5
1-2 为什么要使用面向对象程序设计 9
1-2-1 传统程序设计方法的局限性 9
1-2-2 面向对象程序设计的主要优点 10
1-3 面向对象程序设计的语言 12
1-3-1 面向对象程序设计语言的发展概况 12
1-3-2 几种典型的面向对象程序设计语言 13
1-4 本章小结 13
习题 14
第2章 C++基础 15
2-1 C++的产生和特点 16
2-1-1 C++的产生 16
2-1-2 C++的特点 16
2-2 C++程序的结构特性 17
2-2-1 一个简单的C++示例程序 17
2-2-2 C++程序的结构特性 18
2-2-3 C++程序的编辑、编译和运行 19
2-3 C++在非面向对象方面的扩充 19
2-3-1 注释与续行 19
2-3-2 输入输出流 20
2-3-3 灵活的变量说明 21
2-3-4 结构、联合和枚举名 22
2-3-5 函数原型 22
2-3-6 const修饰符 24
2-3-7 void型指针 26
2-3-8 内联函数 27
2-3-9 带有缺省参数值的函数 29
2-3-10 函数重载 30
2-3-11 作用域标识符∷ 32
2-3-12 无名联合 33
2-3-13 强制类型转换 33
2-3-14 new和delete 33
2-3-15 引用 36
2-4 本章小结 41
习题 42
第3章 类和对象(一) 45
3-1 类的构成 46
3-1-1 从结构到类 46
3-1-2 类的构成 47
3-2 成员函数的声明 48
3-3 对象的定义和使用 50
3-3-1 类与对象的关系 50
3-3-2 对象的定义 51
3-3-3 对象中成员的访问 52
3-3-4 类成员的访问属性 54
3-3-5 对象赋值语句 55
3-3-6 类的作用域 56
3-4 构造函数与析构函数 57
3-4-1 构造函数 57
3-4-2 成员初始化表 60
3-4-3 缺省参数的构造函数 62
3-4-4 析构函数 63
3-4-5 缺省的构造函数和缺省的析构函数 66
3-4-6 重载构造函数 69
3-4-7 拷贝构造函数 71
3-4-8 浅拷贝和深拷贝 77
3-5 对象的生存期 80
3-6 本章小结 83
习题 83
第4章 类和对象(二) 87
4-1 自引用指针this 88
4-2 对象数组与对象指针 90
4-2-1 对象数组 90
4-2-2 对象指针 93
4-2-3 指向类的成员的指针 95
4-3 向函数传递对象 97
4-3-1 使用对象作为函数参数 97
4-3-2 使用对象指针作为函数参数 98
4-3-3 使用对象引用作为函数参数 99
4-4 静态成员 100
4-4-1 静态数据成员 100
4-4-2 静态成员函数 106
4-4-3 通过普通指针访问静态成员 109
4-5 友元 110
4-5-1 友元函数 110
4-5-2 友元成员 113
4-5-3 友元类 114
4-6 对象成员 116
4-7 常类型 121
4-7-1 常引用 121
4-7-2 常对象 121
4-7-3 常对象成员 123
4-8 C++程序的多文件组成 125
4-9 程序举例 126
4-10 本章小结 132
习题 133
第5章 继承与派生类 139
5-1 继承与派生类 140
5-1-1 为什么要使用继承 140
5-1-2 派生类的声明 141
5-1-3 基类成员在派生类中的访问属性 142
5-1-4 派生类对基类成员的访问规则 143
5-2 派生类的构造函数和析构函数 150
5-2-1 派生类构造函数和析构函数的执行顺序 150
5-2-2 派生类构造函数和析构函数的构造规则 151
5-3 调整基类成员在派生类中的访问属性的其他方法 156
5-3-1 同名成员 156
5-3-2 访问声明 158
5-4 多继承 161
5-4-1 多继承的声明 161
5-4-2 多继承的构造函数与析构函数 163
5-4-3 虚基类 166
5-5 赋值兼容规则 171
5-6 程序举例 174
5-7 本章小结 179
习题 180
第6章 多态性与虚函数 187
6-1 多态性概述 188
6-1-1 多态的分类 188
6-1-2 多态的实现 188
6-2 虚函数 189
6-2-1 虚函数的引入 189
6-2-2 虚函数的作用和定义 190
6-2-3 虚析构函数 194
6-2-4 虚函数与重载函数的关系 195
6-2-5 多继承与虚函数 196
6-2-6 虚函数举例 197
6-3 纯虚函数和抽象类 198
6-3-1 纯虚函数 198
6-3-2 抽象类 200
6-4 程序举例 200
6-5 本章小结 206
习题 206
第7章 运算符重载 209
7-1 运算符重载概述 210
7-1-1 运算符重载的好处 210
7-1-2 运算符重载的规则 212
7-2 运算符重载函数的两种形式 213
7-2-1 友元运算符函数 213
7-2-2 成员运算符函数 220
7-2-3 成员运算符函数与友元运算符函数的比较 223
7-3 几个常用运算符的重载 225
7-3-1 单目运算符“++”和“--”的重载 225
7-3-2 赋值运算符“=”的重载 229
7-3-3 下标运算符“[]”的重载 231
7-3-4 函数调用运算符“()”的重载 233
7-3-5 运算符new和delete的重载 235
7-4 类型转换 237
7-4-1 系统预定义类型间的转换 237
7-4-2 类类型与系统预定义类型间的转换 238
7-5 本章小结 242
习题 242
第8章 模板 245
8-1 模板的概念 246
8-2 函数模板与模板函数 247
8-2-1 函数模板的说明 247
8-2-2 函数模板的使用 247
8-2-3 用户定义的参数类型 250
8-2-4 函数模板的异常处理 251
8-3 类模板与模板类 252
8-4 程序举例 257
8-5 本章小结 264
习题 265
第9章 C++的输入和输出 269
9-1 C++为何建立自己的输入输出系统 270
9-2 C++的流库及其基本结构 270
9-2-1 C++的流 270
9-2-2 流类库 271
9-3 预定义类型的输入输出 273
9-3-1 无格式输入输出 273
9-3-2 格式化输入输出 275
9-4 用户自定义类型的输入输出 283
9-4-1 重载输出运算符“<<” 284
9-4-2 重载输入运算符“>>” 285
9-5 文件的输入输出 286
9-5-1 文件的打开与关闭 286
9-5-2 文件的读写 289
9-6 程序举例 294
9-7 本章小结 297
习题 298
第10章 面向对象程序设计方法与实例 301
10-1 面向对象程序设计的一般方法和技巧 302
10-1-1 问题分析和功能定义 303
10-1-2 对象(类)设计及实现 303
10-1-3 核心控制设计 306
10-1-4 编码与测试 306
10-1-5 进化 306
10-2 设计实例 306
10-2-1 举例:模拟网上购书的结帐功能 306
10-2-2 举例:模拟ATM机为用户提供服务 315
10-3 本章小结 335
习题 336
附录 上机实验题 337
实验一 C++基础练习 337
实验二 C++简单程序设计练习 337
实验三 类与对象(一) 338
实验四 类与对象(二) 339
实验五 派生类与继承 339
实验六 虚函数与多态性 340
实验七 函数模板与类模板 341
实验八 输入输出的格式控制 341
实验九 文件的输入与输出 342
实验十 综合练习 343
参考文献 345