第1章 C++程序设计基础 1
1.1 C++的发展和主要特点 1
1.1.1 C++的发展 1
1.1.2 C++的特点 1
1.2 第一个C++程序以及C++程序开发过程 1
1.2.1 第一个C++程序 1
1.2.2 C++程序开发过程 3
1.3 C++在非面向对象方面的常用新特性 4
1.3.1 C++的输入输出 5
1.3.2 const定义常量 6
1.3.3 函数重载 7
1.3.4 有默认参数的函数 9
1.3.5 变量的引用 10
1.3.6 动态分配和释放内存的运算符new和delete 15
1.3.7 布尔类型 17
1.4 程序陷阱 18
1.5 习题 19
第2章 类和对象 21
2.1 由结构到类的发展 21
2.1.1 带函数的结构 21
2.1.2 用构造函数初始化结构的对象 23
2.1.3 从结构到类的演化 24
2.2 面向对象程序设计技术 25
2.2.1 对象 25
2.2.2 抽象和类 25
2.2.3 封装 25
2.2.4 继承 26
2.2.5 多态性 26
2.3 C++类的声明与对象的定义 26
2.3.1 类的声明 26
2.3.2 在类体外定义成员函数 28
2.3.3 定义对象的方法 29
2.3.4 对象成员的引用 30
2.4 构造函数 32
2.4.1 构造函数的定义 32
2.4.2 用参数初始化表对数据成员进行初始化和使用默认参数 33
2.5 析构函数 35
2.6 构造函数和析构函数的一般执行顺序 36
2.7 复制构造函数 38
2.8 用const保护数据 42
2.8.1 常对象成员 43
2.8.2 常对象 45
2.8.3 对象的常引用 47
2.9 友元 48
2.9.1 友元函数 49
2.9.2 友元类 52
2.10 静态成员 56
2.10.1 静态数据成员 56
2.10.2 静态成员函数 57
2.11 this指针 59
2.12 程序陷阱 61
2.13 习题 62
第3章 模板 71
3.1 模板的概念 71
3.2 函数模板及模板函数 73
3.2.1 函数模板的声明及生成模板函数 73
3.2.2 重载函数模板 75
3.3 类模板及模板类 77
3.3.1 类模板的声明及生成模板类 77
3.3.2 在类型形参表中包含常规参数的类模板 80
3.4 实例研究:快速排序 81
3.5 程序陷阱 84
3.6 习题 86
第4章 运算符重载 89
4.1 运算符重载的概念 89
4.2 运算符重载方式 92
4.2.1 运算符重载为类的成员函数 92
4.2.2 运算符重载为类的友元函数 95
4.2.3 运算符重载为普通函数 97
4.3 典型运算符重载 99
4.3.1 重载赋值运算符“=” 99
4.3.2 重载自增1运算符“++”和自减1运算符“--” 103
4.3.3 重载下标运算符“[]” 105
4.3.4 重载函数调用运算符“()” 107
4.3.5 重载输入运算符“>>”和输出运算符“<<” 108
4.4 程序陷阱 110
4.5 习题 111
第5章 继承 112
5.1 继承与派生 112
5.1.1 继承与派生的概念 112
5.1.2 派生类的声明 113
5.1.3 派生类与基类中的同名成员 117
5.2 继承方式 119
5.2.1 公有继承 119
5.2.2 私有继承 121
5.2.3 保护成员和保护继承 123
5.3 派生类的构造函数和析构函数 129
5.3.1 构造函数 129
5.3.2 析构函数 133
5.4 多继承与虚基类 135
5.4.1 多继承 135
5.4.2 多继承引起的多义性问题 137
5.4.3 虚基类 139
5.5 程序陷阱 143
5.6 习题 144
第6章 多态性 151
6.1 多态性的概念 151
6.2 虚函数 152
6.2.1 虚函数的概念 152
6.2.2 虚析构函数 158
6.3 纯虚函数和抽象类 160
6.4 实例研究:栈的实现 163
6.5 程序陷阱 170
6.6 习题 171
第7章 输入输出流 176
7.1 C++的输入和输出 176
7.1.1 输入输出的概念 176
7.1.2 C++的输入输出流 176
7.2 标准输出流对象cout 177
7.2.1 cout 177
7.2.2 格式输出 177
7.2.3 输出流类成员函数put() 181
7.3 标准输入流对象cin 181
7.3.1 cin 181
7.3.2 输入流类的常用字符输入的成员函数 182
7.3.3 输入流类的其他常用成员函数 183
7.4 文件操作与文件流 187
7.4.1 文件和文件流的概念 187
7.4.2 文件的打开与关闭操作 188
7.4.3 对文本文件的操作 189
7.4.4 对二进制文件的操作 194
7.5 实例研究:简单工资管理系统 198
7.6 程序陷阱 208
7.7 习题 210
第8章 C++的其他主题 214
8.1 类型转换 214
8.1.1 标准类型之间的转换 214
8.1.2 类类型的转换 215
8.2 内置函数 217
8.3 异常处理 221
8.4 命令空间 227
8.5 实例研究:实用程序工具包 230
8.6 程序陷阱 236
8.7 习题 238
附录A 本书的软件包 240
附录B 流行C++编译器的使用方法 241
B.1 Visual C++ 6.0 241
B.2 Visual C++ 2005 246
B.3 Visual C++ 2005 Express 253
B.4 Dev-C++ 259
B.5 MinGW Developer Studio 264
参考文献 270