第1章 面向对象方法概述 1
1.1 什么是面向过程程序设计方法 1
1.1.1 面向过程程序设计方法概述 1
1.1.2 面向过程程序设计方法的局限性 3
1.2 什么是面向对象程序设计方法 4
1.2.1 面向对象程序设计方法的基本概念 4
1.2.2 面向对象程序设计方法的基本特征 7
1.2.3 面向对象程序设计方法的主要优点 10
1.3 面向对象程序设计的语言 11
1.3.1 面向对象程序设计语言的发展概况 11
1.3.2 几种典型的面向对象程序设计语言 12
习题 12
第2章 C++的初步知识 14
2.1 C++的发展和特点 14
2.1.1 C++的发展 14
2.1.2 C++的特点 15
2.2 C++源程序的构成 15
2.2.1 一个简单的C++程序 15
2.2.2 C++程序的结构特性 18
2.3 C++程序的编辑、编译、连接和运行 18
2.4 C++对C的扩充 19
2.4.1 注释 19
2.4.2 C++的输入输出 20
2.4.3 灵活的局部变量说明 23
2.4.4 const修饰符 23
2.4.5 函数原型 24
2.4.6 内联函数 27
2.4.7 带有默认参数的函数 28
2.4.8 函数的重载 29
2.4.9 作用域运算符“∷” 31
2.4.10 强制类型转换 32
2.4.11 运算符new和delete 32
2.4.12 引用 35
实验 40
习题 41
第3章 类和对象 46
3.1 类的构成 46
3.1.1 从结构体到类 46
3.1.2 类的构成 47
3.2 成员函数的定义 49
3.2.1 普通成员函数的定义 49
3.2.2 内联成员函数的定义 51
3.3 对象的定义和使用 52
3.3.1 类与对象的关系 52
3.3.2 对象的定义 52
3.3.3 对象中成员的访问 53
3.3.4 类的作用域和类成员的访问属性 55
3.4 构造函数与析构函数 56
3.4.1 对象的初始化和构造函数 56
3.4.2 用成员初始化表对数据成员初始化 60
3.4.3 析构函数 61
3.4.4 默认的构造函数和默认的析构函数 64
3.4.5 带默认参数的构造函数 66
3.4.6 构造函数的重载 67
3.5 对象的赋值与复制 68
3.5.1 对象赋值语句 68
3.5.2 拷贝构造函数 70
3.6 自引用指针this 75
3.7 C++的string类 77
3.8 应用举例 79
实验 80
习题 82
第4章 类和对象的进一步讨论 87
4.1 对象数组与对象指针 87
4.1.1 对象数组 87
4.1.2 对象指针 90
4.2 向函数传递对象 92
4.2.1 使用对象作为函数参数 92
4.2.2 使用对象指针作为函数参数 93
4.2.3 使用对象引用作为函数参数 93
4.3 静态成员 94
4.3.1 静态数据成员 95
4.3.2 静态成员函数 99
4.4 友元 103
4.4.1 友元函数 103
4.4.2 友元类 106
4.5 类的组合 108
4.6 共享数据的保护 111
4.6.1 常对象 111
4.6.2 常对象成员 112
4.7 C++的多文件程序 114
4.8 应用举例 116
实验 119
习题 121
第5章 继承与派生 126
5.1 继承与派生的基本概念 126
5.1.1 为什么要使用继承 126
5.1.2 派生类的声明 128
5.1.3 基类成员在派生类中的访问属性 129
5.1.4 派生类对基类成员的访问规则 130
5.2 派生类的构造函数和析构函数 136
5.2.1 派生类构造函数和析构函数的调用顺序 136
5.2.2 派生类构造函数和析构函数的构造规则 137
5.3 在派生类中显式访问基类成员 141
5.4 多重继承与虚基类 142
5.4.1 声明多重继承派生类的方法 143
5.4.2 多重继承派生类的构造函数与析构函数 145
5.4.3 虚基类 148
5.5 应用举例 153
实验 155
习题 158
第6章 多态性与虚函数 163
6.1 多态性概述 163
6.2 基类与派生类对象之间的赋值兼容关系 163
6.3 虚函数 166
6.3.1 虚函数的引入 166
6.3.2 虚函数的作用和定义 168
6.3.3 虚析构函数 173
6.4 纯虚函数和抽象类 175
6.4.1 纯虚函数 175
6.4.2 抽象类 176
6.5 应用举例 177
实验 179
习题 180
第7章 运算符重载 183
7.1 运算符重载概述 183
7.2 运算符重载函数作为类的友元函数和成员函数 186
7.2.1 运算符重载函数作为类的友元函数 186
7.2.2 运算符重载函数作为类的成员函数 190
7.2.3 运算符重载应该注意的几个问题 193
7.3 前置运算符和后置运算符的重载 196
7.4 重载插入运算符和提取运算符 199
7.4.1 重载插入运算符“〈〈” 199
7.4.2 重载提取运算符“〉〉” 201
7.5 不同类型数据间的转换 203
7.5.1 系统预定义类型间的转换 203
7.5.2 类类型与系统预定义类型间的转换 204
7.6 应用举例 208
实验 211
习题 212
第8章 模板 216
8.1 模板的概念 216
8.2 函数模板 217
8.2.1 函数模板的声明 217
8.2.2 函数模板的使用 217
8.3 类模板 221
8.4 应用举例 227
实验 229
习题 230
第9章 C++的输入和输出 233
9.1 C++流的概述 233
9.1.1 C++的输入/输出流 233
9.1.2 预定义的流对象 234
9.1.3 输入输出流的成员函数 235
9.2 预定义类型输入输出的格式控制 237
9.2.1 用流成员函数进行输入输出格式控制 237
9.2.2 使用预定义的操纵符进行输入输出格式控制 241
9.2.3 使用用户自定义的操纵符进行输入输出格式控制 244
9.3 文件的输入输出 245
9.3.1 文件的概述 245
9.3.2 文件的打开与关闭 246
9.3.3 文本文件的读写 249
9.3.4 二进制文件的读写 252
9.4 应用举例 257
实验 259
习题 261
第10章 异常处理和命名空间 264
10.1 异常处理 264
10.1.1 异常处理概述 264
10.1.2 异常处理的方法 265
10.2 命名空间和头文件命名规则 269
10.2.1 命名空间 269
10.2.2 头文件命名规则 271
10.3 应用举例 272
实验 273
习题 274
第11章 综合设计与实现 276
11.1 需求分析 276
11.2 系统分析 276
11.2.1 基本信息类的属性和操作 276
11.2.2 各种学生类的属性和操作 277
11.2.3 系统管理类的操作 277
11.3 系统设计 278
11.3.1 基类和派生类的设计 278
11.3.2 系统管理类的设计 280
11.4 系统实现 282
实验 291
习题 291
附录 C++上机操作介绍 292
附录A Visual C++ 6.0的开发环境 292
附录B 建立和运行单文件程序 295
附录C 建立和运行多文件程序 303