第1章 面向对象程序设计语言概述 1
1.1 面向对象程序设计概述 1
1.1.1 面向对象程序设计 1
1.1.2 面向对象的软件工程 2
1.1.3 面向对象的主要概念 2
1.2 面向对象程序设计的特点 4
1.2.1 传统程序设计方法的局限性 4
1.2.2 面向对象程序设计的主要优点 4
1.3 面向对象的系统开发方法 6
1.3.1 典型的面向对象程序设计语言 7
1.3.2 C++面向对象程序设计流程 8
1.4 程序举例 9
本章小结 12
习题1 13
第2章 C++语言基础知识 15
2.1 C++语言的产生和发展 15
2.1.1 C++的产生 15
2.1.2 C++的特点 16
2.2 C++程序的结构及编程环境 16
2.2.1 C++程序基本格式 16
2.2.2 C++程序的结构 18
2.2.3 C++程序的编程环境 19
2.3 C++的数据类型 25
2.3.1 关键字和标识符 25
2.3.2 C++的基本数据类型 26
2.3.3 常量 26
2.3.4 变量 31
2.3.5 数组 34
2.3.6 结构体 36
2.3.7 联合体 39
2.3.8 枚举类型 40
2.3.9 用typedef类型 41
2.3.10 数据类型转换 41
2.4 运算符、表达式和基本语句 42
2.4.1 运算符 42
2.4.2 表达式 52
2.4.3 基本语句 54
2.5 函数 57
2.5.1 函数的分类 57
2.5.2 函数的定义 58
2.5.3 函数的声明 59
2.5.4 函数的调用 59
2.5.5 内联函数 60
2.5.6 函数的重载 61
2.6 作用域和引用 62
2.6.1 作用域标识符 62
2.6.2 引用 63
2.7 程序举例 66
本章小结 69
习题2 70
第3章 类和对象 71
3.1 类的概念 71
3.1.1 类的引入 71
3.1.2 类的定义 72
3.1.3 类的成员函数 74
3.2 对象 76
3.2.1 对象的定义 76
3.2.2 对象成员的访问 77
3.2.3 类成员的访问属性 78
3.2.4 对象赋值语句 80
3.2.5 类的作用域 80
3.2.6 自引用指针 81
3.3 构造函数 82
3.3.1 构造函数 82
3.3.2 成员初始化表 86
3.3.3 缺省参数的构造函数 88
3.3.4 缺省的构造函数 89
3.4 析构函数 91
3.4.1 析构函数的构成和作用 91
3.4.2 缺省的析构函数 94
3.5 再谈构造函数 94
3.5.1 重载构造函数 94
3.5.2 拷贝构造函数 95
3.5.3 浅拷贝和深拷贝 100
3.6 程序举例 103
本章小结 106
习题3 106
第4章 对象成员和友元 108
4.1 对象成员 108
4.2 对象数组与对象指针 109
4.2.1 对象数组 109
4.2.2 对象指针 111
4.2.3 指向类的成员的指针 113
4.3 向函数传递对象 116
4.4 静态成员 118
4.4.1 静态数据成员 118
4.4.2 静态成员函数 120
4.4.3 通过普通指针访问静态成员 121
4.5 友元 121
4.5.1 友元函数 122
4.5.2 友元成员 122
4.5.3 友元类 124
4.6 常类型 124
4.6.1 常引用 124
4.6.2 常对象 125
4.6.3 常对象成员 126
4.7 程序举例 128
本章小结 133
习题4 134
第5章 继承和派生 136
5.1 继承与派生 136
5.1.1 继承与代码重用 136
5.1.2 派生类的声明 137
5.1.3 派生类对基类成员的访问 138
5.1.4 派生类对基类成员的访问规则 138
5.2 派生类的构造函数和析构函数 143
5.2.1 派生类构造函数和析构函数的执行顺序 143
5.2.2 派生类构造函数和析构函数的构造规则 144
5.3 多继承 146
5.3.1 多继承的声明 147
5.3.2 多继承的构造函数和析构函数 148
5.3.3 虚基类 150
5.4 赋值兼容规则 152
5.5 程序举例 154
本章小结 158
习题5 159
第6章 多态性和运算符重载 161
6.1 多态性 161
6.1.1 通用多态和专用多态 161
6.1.2 多态的实现 162
6.2 虚函数 162
6.2.1 虚函数的作用和定义 164
6.2.2 虚析构函数 165
6.2.3 虚函数与重载函数的关系 166
6.2.4 多继承与虚函数 167
6.3 纯虚函数和抽象类 168
6.3.1 纯虚函数 168
6.3.2 抽象类 169
6.4 算符重载 170
6.4.1 运算符重载概述 170
6.4.2 运算符重载规则 171
6.5 运算符重载函数的形式 171
6.5.1 成员运算符函数 171
6.5.2 友元运算符函数 175
6.5.3 成员运算符函数与友元运算符函数的比较 181
6.6 程序举例 183
本章小结 190
习题6 191
第7章 模板 193
7.1 模板的概念 193
7.2 函数模板与模板函数 193
7.2.1 函数模板的说明 193
7.2.2 函数模板的使用 194
7.3 模板函数的覆盖 195
7.4 类模板与模板类 196
7.5 程序举例 198
本章小结 201
习题7 201
第8章 C++的输入/输出流 203
8.1 C++的流 203
8.1.1 流的概念 203
8.1.2 I/O流类体系概述 204
8.2 格式化输入输出 206
8.2.1 输出宽度控制:setw和width 207
8.2.2 填充字符控制:setfill和fill 207
8.2.3 输出精度控制:setprecision和precision 208
8.2.4 其他格式状态 209
8.3 文件的输入输出 209
8.3.1 文件的打开与关闭 210
8.3.2 文件的读写 211
8.3.3 文件读写位置指针 213
8.4 程序举例 214
本章小结 217
习题8 217
附录 实验 219
参考文献 222