第1章 面向对象程序设计概述 1
1.1 什么是面向对象程序设计 1
1.1.1 面向过程程序设计的基本概念 1
1.1.2 面向对象程序设计的基本概念 2
1.2 对象与类 3
1.2.1 对象与类的概念 3
1.2.2 对象的状态 5
1.2.3 对象的交互 5
1.2.4 类的确定与划分 7
1.3 数据的抽象与封装 8
1.3.1 现实世界中的抽象与封装 8
1.3.2 数据的抽象与封装的基本概念 8
1.3.3 对象的特性 10
1.4 继承性 10
1.4.1继承的概念 10
1.4.2 继承的分类 12
1.4.3 继承与封装的关系 13
1.5 多态性 13
1.5.1 什么是多态性 13
1.5.2 重载的概念 14
1.6 面向对象程序设计的语言 15
习题 16
第2章 C++概述 17
2.1 C++的起源和特点 17
2.1.1 C++的起源 17
2.1.2 C++的特点 17
2.2 C++源程序的构成 18
2.2.1 C++程序的一般格式 18
2.2.2 C++程序的结构特点 19
2.3 C++在非面向对象方面的一些特性 20
2.3.1 注释行 20
2.3.2 新的I/O流 21
2.3.3 灵活的局部变量说明 23
2.3.4 结构、联合和枚举名可直接作为类型名 23
2.3.5 const修饰符 24
2.3.6 内置函数 26
2.3.7 函数原型 28
2.3.8 带有缺省参数的函数 29
2.3.9 函数重载 30
2.3.10 作用域运算符:: 32
2.3.11 无名联合 33
2.3.12 强制类型转换 33
2.3.13 new和delete 33
2.3.14 引用 35
习题 41
第3章 类和对象 44
3.1 类与对象的基本概念 44
3.1.1 结构与类 44
3.1.2 成员函数的定义 49
3.1.3 对象的定义及引用 50
3.1.4 类的作用域 54
3.2 构造函数与析构函数 55
3.2.1 构造函数 55
3.2.2 缺省参数的构造函数 59
3.2.3 析构函数 60
3.2.4 重载构造函数 62
3.2.5 拷贝构造函数 64
3.3 对象数组与对象指针 67
3.3.1 对象数组 67
3.3.2 对象指针 69
3.3.3 this指针 70
3.4 向函数传递对象 72
3.5 静态成员 74
3.5.1 静态数据成员 74
3.5.2 静态成员函数 77
3.6 友元 79
3.6.1 友元函数 79
3.6.2 友元成员 82
3.6.3 友元类 84
3.7 类对象作为成员 86
习题 88
第4章 派生类与继承 90
4.1 派生类的概念 90
4.1.1 为什么要使用继承 90
4.1.2 派生类的声明 91
4.1.3 保护成员的作用 97
4.2 派生类的构造函数和析构函数 101
4.2.1 派生类构造函数和析构函数的执行顺序 101
4.2.2 派生类构造函数和析构函数的构造规则 102
4.3 多重继承 106
4.3.1 多重继承的声明 106
4.3.2 多重继承的构造函数与析构函数 108
4.3.3 虚基类 112
4.4 应用举例 117
习题 128
第5章 多态性 131
5.1 编译时的多态性与运行时的多态性 131
5.2 函数重载 131
5.3 运算符重载 133
5.3.1 类以外的运算符重载 133
5.3.2 成员运算符函数 136
5.3.3 友元运算符函数 141
5.3.4 成员运算符函数与友元运算符函数的比较 147
5.3.5 “++”和“--”的重载 149
5.3.6 赋值运算符“=”的重载 153
5.3.7 函数调用运算符“()”与下标运算符“[]”的重载 156
5.3.8 类型转换 160
5.4 虚函数 165
5.4.1 引入派生类后的对象指针 165
5.4.2 虚函数的定义及使用 167
5.4.3 纯虚函数和抽象类 176
5.5 应用举例 178
习题 184
第6章 模板 186
6.1 模板的概念 186
6.2 函数模板与模板函数 187
6.2.1 函数模板的声明与模板函数的生成 187
6.2.2 函数模板的异常处理 190
6.3 类模板与模板类 192
6.4 应用举例 198
习题 203
第7章 C++的I/O流类库 204
7.1 C++为何建立自己的输入输出系统 204
7.2 C++的流及流类库 204
7.2.1 C++的流 204
7.2.2 流类库 205
7.3 输入输出的格式控制 208
7.3.1 用ios类的成员函数进行格式控制 208
7.3.2 使用操作符进行输入输出格式控制 215
7.4 用户自定义类型的输入输出 220
7.4.1 重载输出运算符“<<” 220
7.4.2 重载输入运算符“>>” 222
7.5 文件的输入输出 223
7.5.1 文件的打开与关闭 224
7.5.2 文件的读写 227
7.6 应用举例 236
习题 239
参考文献 241