第1章 面向对象程序设计概述 1
1.1面向过程程序设计 1
1.2面向对象程序设计 5
1.2.1面向对象的编程思想 5
1.2.2面向对象的基本概念 6
1.2.3面向对象程序设计的优点 9
1.3面向对象的软件开发 10
1.4学生信息管理系统的面向对象分析与设计 11
习题 13
第2章 C++基础知识 14
2.1从C语言到C++ 14
2.2简单C++程序 15
2.3 C++对C语言的扩充 20
2.3.1 C++的输入/输出 20
2.3.2 C++对C语言数据类型的扩展 21
2.3.3用const定义常变量 21
2.3.4指针 23
2.3.5引用 31
2.3.6函数 35
2.3.7名字空间 43
2.3.8字符串变量 46
2.3.9复数变量 49
2.4 C++程序的编写和实现 52
习题 53
第3章 类与对象 55
3.1类的声明和对象的定义 55
3.1.1类和对象的概念及其关系 55
3.1.2类的声明 56
3.1.3对象的定义 57
3.2类的成员函数 58
3.2.1成员函数的性质 58
3.2.2在类外定义成员函数 59
3.2.3 inline成员函数 59
3.2.4成员函数的存储方式 60
3.3对象成员的访问 62
3.3.1通过对象名和成员运算符访问对象中的成员 62
3.3.2通过指向对象的指针访问对象中的成员 62
3.3.3通过对象的引用访问对象中的成员 63
3.4构造函数与析构函数 63
3.4.1构造函数 63
3.4.2析构函数 67
3.4.3构造函数和析构函数的调用次序 69
3.5对象数组 72
3.6对象指针 75
3.6.1指向对象的指针 75
3.6.2指向对象成员的指针 75
3.6.3 this指针 77
3.7对象与const 78
3.7.1常对象 78
3.7.2常对象成员 79
3.7.3指向对象的常指针 80
3.7.4指向常对象的指针 80
3.7.5对象的常引用 82
3.8对象的动态创建和释放 82
3.9对象的赋值和复制 83
3.9.1对象的赋值 83
3.9.2对象的复制 87
3.9.3对象的赋值与复制的比较 90
3.10向函数传递对象 90
3.11学生信息管理系统中类的声明和对象的定义 92
习题 95
第4章 继承与组合 97
4.1继承与派生的概念 97
4.2派生类的声明方式 98
4.3派生类的构成 99
4.4派生类中基类成员的访问属性 100
4.4.1公用继承 100
4.4.2私有继承 102
4.4.3保护成员和保护继承 103
4.4.4成员同名问题 106
4.5派生类的构造函数和析构函数 107
4.5.1派生类构造函数 107
4.5.2派生类析构函数 110
4.6多重继承 111
4.6.1声明多重继承的方法 112
4.6.2多重继承派生类的构造函数与析构函数 112
4.6.3多重继承引起的二义性问题 114
4.6.4虚基类 117
4.7基类与派生类对象的关系 120
4.8组合 122
4.9学生信息管理系统中继承与组合机制的应用 124
习题 134
第5章 多态性与虚函数 136
5.1什么是多态性 136
5.2向上类型转换 136
5.3功能早绑定和晚绑定 138
5.4实现功能晚绑定——虚函数 139
5.4.1虚函数的定义和作用 139
5.4.2虚析构函数 143
5.4.3虚函数与重载函数的比较 144
5.5纯虚函数和抽象类 144
5.6学生信息管理系统中的多态性 147
习题 156
第6章 面向对象的妥协 157
6.1封装的破坏——友元 157
6.1.1友元函数 157
6.1.2友元类 160
6.2对象机制的破坏——静态成员 161
6.2.1静态数据成员 161
6.2.2静态成员函数 163
习题 165
第7章 运算符重载 167
7.1为什么要进行运算符重载 167
7.2运算符重载的方法 168
7.3重载运算符的规则 170
7.4运算符重载函数作为类的成员函数和友元函数 171
7.4.1运算符重载函数作为类的成员函数 171
7.4.2运算符重载函数作为类的友元函数 175
7.5重载双目运算符 178
7.6重载单目运算符 181
7.7重载流插入运算符和流提取运算符 184
7.8不同类型数据间的转换 187
7.8.1系统预定义类型间的转换 187
7.8.2转换构造函数 188
7.8.3类型转换函数 190
习题 192
第8章 模板 193
8.1为什么需要模板 193
8.2函数模板 194
8.2.1函数模板的定义 194
8.2.2函数模板的实例化 196
8.2.3模板参数 197
8.2.4函数模板重载 200
8.3类模板 203
8.3.1类模板的定义 203
8.3.2类模板的实例化 205
8.3.3类模板参数 207
8.4 STL简介 210
8.4.1容器 210
8.4.2迭代器(iterator) 219
8.4.3算法 221
习题 222
第9章 输入/输出流 224
9.1 C++的输入和输出概述 224
9.2 C++的标准输入/输出流 224
9.2.1 iostream类库中有关的类及其定义的流对象 224
9.2.2 C++的标准输出流 226
9.2.3 C++的标准输入流 228
9.3输入与输出运算符及其重载 234
9.3.1输入运算符 234
9.3.2输出运算符 234
9.3.3输入与输出运算符的重载 235
9.4 C++格式输入/输出 235
9.4.1用ios类提供的格式化函数控制输入/输出格式 235
9.4.2用控制符控制输入/输出格式 238
9.5文件操作与文件流 240
9.5.1文件的概念 240
9.5.2文件流类及其流对象 240
9.5.3文件的打开与关闭 241
9.5.4对文本文件的操作 242
9.5.5对二进制文件的操作 244
9.5.6随机访问二进制文件 245
9.6学生信息管理系统中的文件操作 247
习题 247
第10章 异常处理 249
10.1异常处理的概念及C++异常处理的基本思想 249
10.2异常处理的实现 250
10.2.1异常处理语句 250
10.2.2在函数声明中进行异常情况指定 255
10.2.3析构函数与异常 256
10.3学生信息管理系统中的异常处理 257
习题 258
第11章 图形界面C++程序设计 259
11.1基于对话框的图形界面C++程序设计 259
11.2基于单文档的图形界面C++程序设计 270
11.3学生信息管理系统的图形界面设计 288
习题 288
参考文献 289