目录 1
前言 1
第1章 C++简单程序设计 1
1.1 C++语言概述 1
1.1.1 从C到C++ 1
1.1.2 C++面向对象的特性 1
1.1.3 C++的词法与规则 2
1.1.4 C++程序结构的组成 4
1.1.5 C++程序的开发步骤 4
1.2 基本数据类型和表达式 5
1.2.1 数据类型概述 5
1.2.2 常量 6
1.2.3 变量 10
1.3 运算符与表达式 11
1.3.1 运算符 12
1.3.2 表达式 15
1.3.3 数据类型转换 16
1.4 程序的基本控制结构 17
1.4.1 顺序结构 17
1.4.2 选择结构 19
1.4.3 循环结构 25
1.4.4 转移语句 29
习题 31
第2章 函数 33
2.1 函数的定义与函数的声明 33
2.1.1 函数的定义 33
2.1.2 函数的声明 35
2.2.1 函数调用的格式 37
2.2 函数的调用 37
2.2.3 函数调用时的参数传递 38
2.2.2 函数调用的过程 38
2.2.4 带默认形参值的函数 40
2.2.5 函数的递归调用 43
2.2.6 函数的嵌套调用 48
2.3 内联函数 48
2.4 存储类型说明与作用域 51
2.4.1 存储类型说明 51
2.4.2 作用域的分类 53
2.4.3 域运算符 58
习题 59
3.1 类和类的定义 60
3.1.1 类的定义 60
第3章 类和对象 60
3.1.2 类的成员函数 63
3.1.3 类和结构 64
3.2 对象和对象的定义 66
3.2.1 对象的说明 66
3.2.2 对象的生存期 68
3.2.3 类作用域 69
3.3 构造函数与析构函数 70
3.3.1 构造函数 70
3.3.2 析构函数 73
3.3.3 缺省构造函数和缺省析构函数 75
3.3.4 带参数的构造函数 75
3.4 拷贝构造函数 76
3.5 局部类和嵌套类 81
3.6.1 引用的概念 83
3.6 引用 83
3.6.2 引用作为函数参数 84
3.6.3 对象引用作函数参数 86
3.6.4 引用返回值 86
3.7 常类型 88
3.7.1 const和volatile 88
3.7.2 常引用 88
3.7.3 常对象 89
3.7.4 常对象成员 90
习题 94
第4章 数组与指针 97
4.1 数组 97
4.1.1 数组的定义及初始化 97
4.1.2 二维数组 101
4.1.3 对象数组 104
4.1.4 字符串处理 105
4.2 指针 107
4.2.1 指针的定义和使用 107
4.2.2 指针运算 118
4.3 指针与字符串 122
4.3.1 通过指针访问字符 123
4.3.2 字符数组与字符指针的异同 123
4.3.3 字符指针作为函数参数 124
4.4 指针与数组 124
4.4.1 一维数组的指针表示法 124
4.4.2 二维数组的指针表示法 130
4.4.3 指针数组 131
4.5.1 函数指针 135
4.5 指针与函数 135
4.5.2 指针作为函数参数 136
4.5.3 指针型函数 143
4.5.4 main函数中的指针参数 145
4.6 void指针与const指针 147
4.6.1 void指针 147
4.6.2 const指针 149
4.7 类成员指针 149
4.7.1 类数据成员指针 149
4.7.2 类成员函数指针 150
4.8 this指针 151
4.9 动态内存分配 153
4.9.1 new 153
4.9.2 delete 155
习题 159
第5章 继承和派生 160
5.1 基类和派生类 160
5.1.1 派生类的定义格式 160
5.1.2 派生类的三种继承方式 162
5.1.3 访问控制 165
5.1.4 基类和派生类的关系 171
5.2 单继承 171
5.2.1 成员访问权控制 171
5.2.2 派生与构造函数、析构函数 173
5.2.3 继承中构造函数的调用顺序 178
5.2.4 组合 180
5.2.5 子类型和类型适应 181
5.3 多继承 181
5.3.1 多继承的概念 181
5.3.2 多继承的构造函数 183
5.3.3 二义性和支配原则 187
5.3.4 赋值兼容规则 191
5.4 虚基类 192
5.4.1 虚基类的引入 192
5.4.2 虚基类的构造函数 197
习题 199
第6章 静态成员与友元 201
6.1 静态成员 201
6.1.1 静态数据成员 201
6.1.2 静态成员函数 203
6.2 友元函数 205
6.2.1 友元函数的说明 206
6.2.2 友元函数的使用 208
6.3 友元类 209
习题 210
第7章 运算符重载 214
7.1 运算符重载概述 214
7.2 运算符重载的实现 215
7.3 一元运算符重载 219
7.4 二元运算符重载 221
7.5 特殊运算符重载 224
7.5.1 赋值运算符重载 224
7.5.2 下标运算符重载 227
7.5.3 比较运算符重载 228
7.5.4 new与delete运算符重载 228
7.5.5 逗号运算符重载 230
7.5.6 类型转换运算符重载 231
7.5.7 -〉运算符重载 232
7.5.8 函数调用运算符重载 232
7.5.9 I/O运算符重载 233
习题 234
第8章 模板 237
8.1 模板的概念 237
8.2 函数模板 237
8.2.1 函数模板说明 237
8.2.2 使用函数模板 238
8.2.3 重载模板函数 239
8.3 类模板 239
8.3.1 类模板说明 240
8.3.2 使用类模板 242
8.3.3 类模板的友元 246
8.3.4 标准类模板类库 248
习题 249
9.1.1 普通成员函数重载 251
第9章 多态性与虚函数 251
9.1 多态性 251
9.1.2 构造函数重载 255
9.1.3 派生类指针 258
9.2 虚函数 262
9.2.1 静态联编与动态联编 262
9.2.2 虚函数的概念 263
9.2.3 动态联编与虚函数 271
9.2.4 虚函数的限制 273
9.2.5 虚函数与重载函数的比较 274
9.3 纯虚函数和抽象类 274
9.3.1 纯虚函数 274
9.3.2 抽象类 276
9.3.3 虚析构函数 280
习题 281
10.1 I/O标准流类 284
10.1.1 预定义流 284
第10章 流类库与输入输出 284
10.1.2 C++中的流类库 286
10.2 格式化I/O 286
10.2.1 ios类中的枚举常量 286
10.2.2 使用ios成员函数 287
10.2.3 使用I/O操作符 290
10.2.4 检测流操作的错误 292
10.3 文件流 292
10.3.1 文件的概念 292
10.3.2 文件的打开与关闭 294
10.3.3 文件的读写 297
10.4.1 字符串流概述 303
10.4 字符串流 303
10.4.2 istrstream类的构造函数 304
10.4.3 ostrstream类的构造函数 305
习题 306
第11章 异常处理 309
11.1 异常处理概述 309
11.2 异常处理的基本思想 309
11.3 异常处理的实现 310
11.3.1 异常处理的语法 310
11.3.2 异常处理机制 313
11.4 标准C++库中的异常类 318
11.5 多路捕获 318
11.6 含有异常的程序设计 321
11.6.1 何时避免异常 321
11.6.2 异常的典型使用 322
习题 323
第12章 Visual C++环境下Windows程序开发概述 326
12.1 Visual C++可视化集成开发环境 326
12.1.1 Visual C++简介 326
12.1.2 项目开发过程 327
12.1.3 集成开发环境Developer Studio 328
12.1.4 常用功能键及其意义 329
12.2 创建、组织文件、工程和工作区 330
12.2.1 新建工程 331
12.2.2 新建工作区 331
12.3 Windows编程基础 332
12.3.2 Windows基础 332
12.3.1 Windows API 332
12.2.5 设置当前工程 332
12.2.4 打开工作区 332
12.2.3 增加已有文件到工程中 332
12.3.3 Windows消息映射和处理 334
12.4 Win32开发 335
12.4.1 抢先式多任务和多线程 336
12.4.2 连续的地址空间和先进的内存管理 336
12.4.3 内存映射文件 337
12.4.4 Win32s:Windows 3.x对Win32 API的支持 338
12.4.5 Win32编程基础 338
12.5 MFC编程 339
12.5.1 MFC类库概念和组成 339
12.5.2 MFC应用程序框架 343
12.5.3 MFC的优点 344
12.5.4 MFC对消息的管理 344
参考文献 348