第1章 C++基础知识 1
1.1 C++语言简介 1
1.1.1 C++的诞生和发展 1
1.1.2 C++的基本特性 2
1.2 C++对C的扩充 2
1.2.1新的输入输出方式 2
1.2.2注释、变量声明与作用域限定符 4
1.2.3强制类型转换与const标识符 6
1.2.4函数原型声明 7
1.2.5内联函数 7
1.2.6函数重载 8
1.2.7带默认参数的函数 9
1.2.8引用 10
1.2.9运算符new和delete 12
1.2.10布尔类型 13
1.3 C++程序的开发过程 13
1.3.1一个简单的C++程序 13
1.3.2 C++程序的开发 15
习题1 15
第2章 C++类和对象 16
2.1面向对象程序设计方法概述 16
2.1.1面向对象程序设计方法的基本概念 16
2.1.2面向对象程序设计方法的基本原理 17
2.2类和对象 19
2.2.1类的定义 20
2.2.2成员函数的实现 22
2.2.3对象的创建 23
2.2.4类成员的访问 23
2.3构造函数和析构函数 26
2.3.1构造函数 26
2.3.2重载构造函数 30
2.3.3带默认参数的构造函数 33
2.3.4拷贝构造函数 35
2.3.5析构函数 37
2.4对象数组 40
2.5对象指针 43
2.5.1指向对象的指针 43
2.5.2 this指针 45
2.6静态成员 49
2.6.1静态数据成员 49
2.6.2静态成员函数 52
2.7友元关系 55
2.7.1友元函数 56
2.72友元类 59
2.8共享数据的保护 64
2.8.1常引用 64
2.8.2常对象 65
2.8.3常成员 67
2.9应用实例:员工信息管理系统 71
习题2 73
第3章 继承 74
3.1类的继承与派生 74
3.1.1继承与派生的概念 74
3.1.2派生类的定义 77
3.2继承方式 78
3.2.1公有继承 78
3.2.2私有继承 81
3.2.3保护继承 84
3.3派生类的构造函数和析构函数 89
3.3.1派生类的构造函数 89
3.3.2析构函数 91
3.4多继承 93
3.4.1多继承的声明 93
3.4.2多继承的构造函数 95
3.4.3多继承中的二义性问题 96
3.5虚基类 99
3.5.1虚基类的作用 99
3.5.2虚基类的初始化 102
3.6组合类 104
3.6.1组合类的概念 104
3.6.2组合类中的构造函数 105
3.7继承应用实例 109
3.7.1问题描述 109
3.7.2完整源程序 109
3.7.3运行结果 116
习题3 118
第4章 多态性 122
4.1多态性 122
4.2虚函数 122
4.2.1虚函数的概念 122
4.2.2必须使用虚函数的例子 123
4.2.3虚函数的覆盖 135
4.2.4虚函数的传递性 139
4.2.5虚析构函数 146
4.3抽象类 148
4.3.1纯虚函数 148
4.3.2抽象类 149
4.3.3使用抽象类的例子 150
4.4函数重载 154
4.4.1成员函数重载 155
4.4.2全局函数重载 157
4.4.3函数的默认参数 159
4.4.4二义性问题 160
4.4.5虚函数与函数重载的关系 160
4.5运算符重载 161
4.5.1运算符重载的意义 161
4.5.2运算符重载的规则 161
4.5.3成员和非成员运算符函数重载 162
4.5.4单目和双目运算符函数重载 163
4.5.5赋值运算符重载和拷贝构造函数 168
4.5.6其他运算符重载 170
4.5.7综合举例 172
习题4 184
第5章 模板 186
5.1模板的基本概念和作用 186
5.2函数模板及模板函数 187
5.2.1函数模板定义及其实例化 187
5.2.2重载函数模板 189
5.3类模板及模板类 192
5.3.1类模板定义及其实例化 192
5.3.2类模板的派生 198
5.4模板实例 199
习题5 209
第6章 标准模板库 210
6.1标准模板库概述 210
6.1.1标准模板库发展简介 210
6.1.2标准模板库的主要内容 210
6.2迭代器 211
6.2.1迭代器的起源 211
6.2.2迭代器类模板位置 224
6.2.3迭代器的编程思想 228
6.3函数对象 228
6.3.1从函数到函数对象 228
6.3.2系统函数对象类模板 233
6.4常用通用容器 237
6.4.1 vector容器 237
6.4.2 list容器 240
6.4.3 deque容器 244
6.4.4 queue和stack容器 246
6.5 STL常用算法 249
6.5.1遍历容器算法for_each() 249
6.5.2查询算法find() 253
6.5.3排序算法sort() 256
6.6应用实例:列车调度 259
6.6.1问题描述 259
6.6.2分析 259
6.6.3实现步骤 260
6.6.4运行程序 263
习题6 264
第7章 C++输入/输出 265
7.1输入流与输出流基础 265
7.2标准输出流对象cout 266
7.3标准输入流对象cin 267
7.4文件操作与文件流 273
7.4.1文件和文件流基础 273
7.4.2文件的打开与关闭操作 274
7.4.3文本文件 275
7.4.4二进制文件 280
7.5应用实例:扩展C++ 284
7.5.1问题描述 284
7.5.2分析 285
7.5.3实现步骤 290
7.5.4运行程序 298
习题7 299
第8章 C++高级主题 301
8.1动态内存管理 301
8.1.1 new运算符和delete运算符的作用 301
8.1.2重载new和delete运算符 306
8.1.3常见动态内存错误 308
8.1.4指针和数组的差异 309
8.1.5利用指针传递内存 310
8.2类型转换 313
8.3异常处理 316
8.4命名空间 322
习题8 325
第9章 MFC开发 326
9.1 MFC简介 326
9.2 MFC的主要类 326
9.2.1 MFC类库中的主要类 326
9.2.2可视对象类 327
9.3 MFC的消息与消息处理方法 329
9.4应用程序向导AppWizard与类向导ClassWizard 333
9.4.1应用程序向导AppWizard 333
9.4.2类向导ClassWizard 339
9.5应用实例:人事管理 347
9.5.1问题描述 347
9.5.2分析 347
9.5.3实现步骤 348
9.5.4运行程序 356
习题9 358
附录 359
附录A Visual C++6.0编译器使用方法 359
附录B C++面向对象程序设计模拟试题 365
B.1模拟试题一 365
B.2模拟试题一参考答案 373
B.3模拟试题二 377
B.4模拟试题二参考答案 384
参考文献 387