第1章 面向对象程序设计概述 1
1.1面向对象程序设计方法的发展历史 1
1.2面向过程和面向对象程序设计方法概述 2
1.2.1面向过程程序设计 3
1.2.2面向对象程序设计 4
1.3面向对象程序设计的基本术语 5
1.4面向对象程序设计的基本特征 7
1.4.1抽象性 7
1.4.2封装性 8
1.4.3继承性 9
1.4.4多态性 10
1.5面向对象程序设计语言 10
1.5.1从C到C++ 11
1.5.2其他的面向对象程序设计语言 11
1.6基于Visual Studio 2010的C++应用程序的开发 12
小结 16
习题 17
第2章C++基础 19
2.1 C++程序的组成部分 19
2.2命名空间 21
2.2.1什么是命名空间 21
2.2.2 C++中的命名空间定义 23
2.2.3 C++中的命名空间的使用 24
2.2.4 std命名空间 26
2.3 C++数据的输入/输出 28
2.3.1 C++的流 28
2.3.2 cin和流提取运算符 28
2.3.3 cout和流插入运算符 29
2.4引用 29
2.5函数 31
2.5.1函数原型 31
2.5.2重载函数 32
2.5.3带有默认参数的函数 34
2.5.4内联函数 35
2.5.5引用参数和返回引用 36
2.6变量的作用域与可见性 38
2.6.1作用域 38
2.6.2可见性 41
2.7变量的生存期 41
2.7.1静态生存期 41
2.7.2动态生存期 42
2.8 const常量 43
2.8.1常量的定义 43
2.8.2 const和#define 43
2.9动态内存分配和释放 44
2.9.1 new运算符 44
2.9.2 delete算符 45
2.10编译预处理 46
2.10.1宏定义 46
2.10.2文件包含 47
2.10.3条件编译 47
2.11文件的输入和输出 49
2.11.1文件的打开和关闭 49
2.11.2文件的输入和输出 50
小结 51
习题 52
第3章类和对象 54
3.1类和对象的概念 54
3.1.1类的基本概念 54
3.1.2对象的基本概念 55
3.2类的定义 55
3.2.1类的定义格式 55
3.2.2类的成员 56
3.2.3类成员访问控制权限 56
3.2.4成员函数的实现方式 59
3.2.5成员函数设置为内联函数 60
3.2.6成员函数重载 61
3.3对象的创建与使用 62
3.3.1对象的定义 63
3.3.2对象成员的访问 63
3.4构造函数 67
3.4.1构造函数的定义和功能 67
3.4.2默认构造函数 68
3.4.3无参构造函数 68
3.4.4构造函数的重载 69
3.4.5带默认参数的构造函数 70
3.4.6构造函数与初始化列表 71
3.5析构函数 71
3.6构造函数和析构函数的调用顺序 72
3.7对象数组与对象指针 75
3.7.1对象数组 75
3.7.2对象指针 76
3.7.3 this指针 77
3.8向函数传递对象 78
3.8.1使用对象作为函数参数 79
3.8.2使用对象指针作为函数参数 79
3.8.3使用对象引用作为函数参数 80
3.8.4三种传递方式比较 81
3.9对象的赋值和复制 83
3.9.1对象赋值语句 83
3.9.2拷贝构造函数 84
3.10类的组合 86
3.11程序实例 89
小结 92
习题 93
第4章 类与对象的其他特性 95
4.1类的静态成员 95
4.1.1静态数据成员 95
4.1.2静态数据成员定义 96
4.1.3静态数据成员的初始化 96
4.1.4静态数据成员的使用 97
4.1.5静态成员函数 99
4.2友元 101
4.2.1友元函数 102
4.2.2友元类 104
4.3类的作用域和对象的生存期 106
4.3.1类的作用域 106
4.3.2对象的生存期 107
4.4常量类型 109
4.4.1常量对象 109
4.4.2常量成员 110
4.4.3常量引用 113
4.4.4常量指针与指向常量的指针 114
小结 116
习题 117
第5章 继承与派生 118
5.1类的继承与派生概念 118
5.2基类与派生类 120
5.2.1派生类的声明 120
5.2.2派生类的生成过程 121
5.2.3继承方式和派生类的访问权限 122
5.3派生类的构造函数和析构函数 128
5.3.1派生类构造函数 128
5.3.2派生类析构函数的构建 131
5.3.3派生类构造函数和析构函数执行顺序 132
5.4多重继承 134
5.4.1多重继承的声明 134
5.4.2多重继承的构造函数和析构函数 135
5.4.3多重继承中的二义性 137
5.4.4虚基类 142
5.5子类型与赋值兼容规则 146
5.5.1子类型 146
5.5.2赋值兼容规则 147
5.6程序实例 148
小结 151
习题 152
第6章 多态性 153
6.1多态性的概念 153
6.1.1多态的类型 154
6.1.2静态关联与动态关联 154
6.2运算符重载 154
6.2.1什么是运算符重载 154
6.2.2运算符重载的方法 155
6.2.3重载运算符的规则 156
6.2.4运算符重载为成员函数和友元函数 157
6.2.5重载双目运算符 159
6.2.6重载单目运算符 160
6.2.7重载流插入运算符和流提取运算符 162
6.3不同类型数据间的转换 164
6.3.1标准类型数据间的转换 164
6.3.2用转换构造函数实现类型转换 165
6.3.3用类型转换函数进行类型转换 166
6.4虚函数 166
6.4.1虚函数的定义 166
6.4.2虚函数的作用 167
6.4.3对象的存储 172
6.4.4虚析构函数 173
6.5纯虚函数与抽象类 175
6.5.1纯虚函数 175
6.5.2抽象类 176
小结 179
习题 180
第7章 模板 181
7.1模板的概念 181
7.2函数模板与模板函数 182
7.2.1函数模板的定义和模板函数的生成 182
7.2.2模板函数显式具体化 187
7.3类模板与模板类 188
7.3.1类模板的定义和使用 189
7.3.2类模板的派生 195
7.3.3类模板显式具体化 198
7.4程序实例 201
小结 207
习题 207
第8章 文件和流 209
8.1 C++的输入/输出 209
8.2标准输入流 210
8.2.1使用cin进行输入 210
8.2.2其他istream类方法 211
8.3标准输出流 212
8.3.1使用cout进行输出 212
8.3.2使用cout进行格式化输出 214
8.3.3其他ostream类方法 219
8.4文件的输入和输出 220
8.4.1文件的打开与关闭 220
8.4.2文本文件的读写操作 222
8.4.3二进制文件的读写操作 225
8.4.4使用文件指针成员函数实现随机存取 226
8.5程序实例 228
小结 229
习题 230
第9章 异常处理 231
9.1异常处理概述 231
9.1.1异常、异常处理的概念 231
9.1.2异常处理的基本思想 232
9.2异常处理的实现 232
9.2.1异常处理的语句 233
9.2.2异常接口声明 238
9.3构造函数、析构函数与异常处理 239
9.4异常匹配 242
9.5标准异常及层次结构 243
9.6异常处理中需要注意的问题 244
小结 245
习题 245
参考文献 246