第1章 绪论 1
1.1软件业历史和程序设计方法 1
1.1.1软件业历史 1
1.1.2程序设计方法 2
1.2面向对象的基本概念 5
1.2.1什么是面向对象 5
1.2.2对象和对象的模型化 5
1.2.3对象的抽象与类 6
1.2.4消息 7
1.2.5类之间的关系 8
1.2.6多态性 10
1.3面向对象的软件开发 10
1.3.1面向对象的分析和设计 10
1.3.2面向对象的开发语言 11
1.3.3面向对象的开发工具 12
习题 14
第2章C++基础 15
2.1新规定和新概念 15
2.1.1 C+++程序的组织 15
2.1.2程序的注释 15
2.1.3变量定义 16
2.1.4 C++中的常量 16
2.1.5引用类型 17
2.2新的运算符 18
2.2.1输入和输出运算符 19
2.2.2作用域运算符 19
2.2.3 new和delete运算符 19
2.3函数的新变化 20
2.3.1函数声明和定义 20
2.3.2内联函数(inline函数) 21
2.4其他 23
2.4.1枚举类型 23
2.4.2强制类型转换 23
2.4.3 void类型 23
习题 24
第3章 类和对象 26
3.1面向对象程序设计的基本特点 26
3.1.1抽象 26
3.1.2封装和信息隐藏 26
3.1.3继承和多态 27
3.2类和对象 28
3.2.1类的声明和定义 28
3.2.2类成员的访问控制 29
3.2.3类的成员函数 29
3.2.4对象 31
3.2.5应用举例 32
3.3构造函数和析构函数 33
3.3.1构造函数 33
3.3.2析构函数 35
3.4对象初始化 36
3.4.1对象初始化 36
3.4.2对象数组初始化 37
3.5对象成员 38
3.5.1初始化表 38
3.5.2应用举例 38
3.6静态成员 41
3.6.1问题提出 41
3.6.2静态成员 41
3.6.3应用举例 42
3.7友元 44
3.7.1友元是外部函数 44
3.7.2友元是类成员函数 45
3.7.3友类 46
3.8常量成员 47
3.8.1常量成员的声明 48
3.8.2应用举例 48
3.9对象指针 49
3.9.1 this指针 49
3.9.2成员函数指针 50
习题 51
第4章 函数重载和运算符重载 55
4.1多态性概述 55
4.2函数重载 55
4.3运算符重载 57
4.4赋值运算和拷贝策略 59
4.4.1赋值运算和拷贝策略 59
4.4.2类聚合中的拷贝构造函数和赋值运算 61
4.5特殊运算符重载 62
4.5.1运算符“++”和“--” 63
4.5.2下标运算符“口” 65
4.5.3函数调用运算符“()” 66
4.5.4提取/插入运算符“>>”和“<<” 68
4.5.5运算符重载实例 69
4.6类型转换 72
习题 75
第5章 继承 78
5.1继承与派生 78
5.1.1继承与派生的概念 78
5.1.2派生类的声明 78
5.2访问控制和继承方式 80
5.2.1对类中成员的访问方式 80
5.2.2访问控制和继承方式 81
5.3同名覆盖和访问权限调整 85
5.3.1成员函数的同名覆盖 85
5.3.2访问权限的调整机制 86
5.4继承中的成员访问 88
5.4.1派生类成员的标识与访问 88
5.4.2继承中的友元关系 89
5.5多重继承 91
5.5.1重复继承 91
5.5.2共享继承 92
5.6派生类的构造函数与析构函数 94
5.6.1单继承的构造函数 94
5.6.2多继承的构造函数 96
5.6.3继承中的析构函数 102
5.7赋值兼容规则与继承中的成员拷贝 103
5.7.1赋值兼容规则 103
5.7.2继承中的拷贝构造函数和赋值运算 105
习题 107
第6章 虚函数 112
6.1运行多态和束定 112
6.2虚函数 113
6.2.1虚函数的声明 113
6.2.2虚函数的使用 114
6.2.3应用举例 115
6.3纯虚函数和抽象类 118
6.3.1纯虚函数 119
6.3.2抽象类 119
6.4虚析构函数和运算符虚函数 121
6.4.1虚析构函数 121
6.4.2运算符虚函数 123
习题 125
第7章 模板 127
7.1模板的概念 127
7.2函数模板 127
7.2.1函数模板定义 127
7.2.2函数模板的用法 128
7.3类模板 129
7.3.1类模板的概念 129
7.3.2类模板的使用 130
7.3.3模板类的显式定义性声明 131
7.3.4类模板中的其他概念 133
7.4 C++标准模板库STL 134
7.4.1 STL简介 134
7.4.2命名空间及声明 135
7.4.3 string类型 136
7.4.4 vector类型 138
7.4.5映射(map) 143
习题 148
第8章 异常处理 151
8.1异常处理基础 151
8.1.1异常的概念 151
8.1.2 C++异常处理的实现 152
8.1.3异常处理举例 152
8.2异常的组织 154
8.2.1多个异常 154
8.2.2使用枚举组织异常 156
8.2.3使用继承组织异常 157
8.2.4利用虚函数处理异常 159
8.2.5再次抛出异常 161
8.2.6异常处理策略 162
8.3异常接口声明 163
习题 164
第9章流 166
9.1流类的基本结构 166
9.2输入/输出的格式控制 167
9.3提取/插入运算符和控制符 170
9.3.1提取/插入运算符 170
9.3.2控制符 171
9.4文件流 172
9.4.1文件的打开和关闭 172
9.4.2文件指针和结束标志 173
9.4.3文本文件的读写 174
9.4.4二进制文件的读写 176
9.5字符串流 177
习题 178
第10章 面向对象的分析与设计 182
10.1面向对象的分析 182
10.1.1需求陈述 182
10.1.2对象模型 184
10.1.3动态模型 194
10.1.4功能模型 200
10.1.5定义服务 203
10.2面向对象的设计 204
10.2.1组合三种模型 205
10.2.2设计算法 205
10.2.3优化数据访问路径 206
10.2.4系统与外部的交互控制 206
10.2.5调整类结构提高继承性 207
10.2.6关联设计 208
10.3总结 209
习题 209
参考文献 211