第1章 C++的基本程序设计思想 1
1.1 C++语言简介 1
1.1.1 一个C++程序实例 2
1.1.2 C++字符集 3
1.1.3 ASCII码 3
1.2 C++程序的基本组成成分 4
1.2.1 词法记号 4
1.2.2 常量 6
1.2.3 变量 10
1.2.4 有名常量 11
1.2.5 运算符与表达式 12
1.3 C++数据类型 20
1.3.1 基本数据类型 20
1.3.2 枚举类型 23
1.3.3 结构体 24
1.3.4 联合体 27
1.3.5 位域 28
1.4 数据的输入与输出 29
1.4.1 I/O流 29
1.4.2 预定义的插入符和提取符 29
1.4.3 简单的I/O格式控制 30
1.5 条件控制 30
1.5.1 条件语句 31
1.5.2 switch语句 34
1.6 循环 36
1.6.1 for循环语句 36
1.6.2 while循环语句 38
1.6.3 do-while循环语句 39
1.6.4 转移语句 39
1.6.5 多重循环 40
1.7 数组 44
1.7.1 数组的概念 44
1.7.2 一维数组 45
1.7.3 维数组 49
1.7.4 使用typedef语句定义数组类型 52
1.8 字符串 53
1.8.1 字符串概念 53
1.8.2 字符串函数 55
1.9 本章小结 57
习题 58
第2章 函数 64
2.1 函数的定义与使用 64
2.1.1 函数的定义与说明 64
2.1.2 函数的调用 65
2.1.3 函数的参数和返回值 67
2.2 传值调用与引用调用 72
2.2.1 传值调用 72
2.2.2 引用调用 72
2.3 函数和变量的作用域 77
2.3.1 函数的作用域 77
2.3.2 变量的作用域和生存期 77
2.3.3 C++的命名空间 78
2.4 内联函数和重载函数 80
2.4.1 内联函数 80
2.4.2 函数重载 81
2.5 函数的嵌套调用和递归调用 82
2.5.1 函数的嵌套调用 82
2.5.2 函数的递归调用 83
2.6 函数模板和使用C++系统函数 86
2.6.1 函数模板 86
2.6.2 使用C++系统函数 88
2.7 本章小结 88
习题 89
第3章 类与对象 95
3.1 类的定义和对象的创建 95
3.1.1 类设计的基本概念 95
3.1.2 类的定义格式 96
3.1.3 类的成员函数 97
3.1.4 类成员的访问控制 97
3.1.5 对象的声明与使用 98
3.2 构造函数和析构函数 99
3.2.1 构造函数与拷贝构造函数 99
3.2.2 析构函数 103
3.3 对象的生存期及类的作用域 104
3.3.1 对象的生存期 104
3.3.2 类的作用域 105
3.4 友元类和友元函数 106
3.4.1 友元函数 107
3.4.2 友元类 107
3.5 静态成员 109
3.5.1 静态数据成员 109
3.5.2 静态成员函数 110
3.6 类和对象的进一步应用 110
3.6.1 类对象作为成员 110
3.6.2 常对象 111
3.6.3 对象作为函数参数 112
3.6.4 对象数组 113
3.7 类模板 115
3.7.1 类模板的定义 115
3.7.2 类模板的使用 116
3.8 本章小结 117
习题 118
第4章 指针 122
4.1 指针的概念 122
4.2 指针的定义、赋值及运算 123
4.2.1 如何定义指针 123
4.2.2 “*”和“&”运算符 123
4.2.3 指针的赋值 123
4.2.4 指针的运算 125
4.3 指针与数组 127
4.3.1 用指针访问数组元素 127
4.3.2 指向数组的指针 129
4.3.3 指针数组 130
4.4 指针与字符串 131
4.4.1 字符数组与字符指针 131
4.4.2 字符串处理函数 133
4.4.3 string类 136
4.5 指针与函数 136
4.5.1 指针作为函数参数 136
4.5.2 指针函数 138
4.5.3 函数指针 139
4.6 指针与引用 140
4.7 其他类型的指针 141
4.7.1 const指针 141
4.7.2 对象指针 143
4.7.3 this指针 143
4.8 动态内存分配 145
4.8.1 堆内存 145
4.8.2 new和delete运算符 145
4.8.3 动态内存分配与释放函数 147
4.9 本章小结 148
习题 149
第5章 继承与派生 157
5.1 继承的含义 157
5.2 继承的语法 157
5.3 继承中的访问控制 158
5.3.1 有继承 158
5.3.2 私有继承 160
5.3.3 保护继承 161
5.4 成员覆盖与作用域分辨 161
5.5 继承中对象的初始化与清除 163
5.5.1 初始化和清除 163
5.5.2 构造函数和析构函数的调用顺序 164
5.6 上映射 165
5.6.1 公有继承中的向上映射示例 166
5.6.2 私有继承、保护继承和向上映射 168
5.6.3 上映射的缺点 168
5.7 多重继承 169
5.7.1 多重继承的语法 169
5.7.2 多重继承中的构造函数与析构函数 169
5.7.3 多重继承的二义性 171
5.7.4 虚基类 173
5.8 本章小结 176
习题 177
第6章 多态 187
6.1 多态概述 187
6.1.1 多态的类型 187
6.1.2 多态的实现机制 187
6.2 运算符重载 188
6.2.1 运算符重载的语法和规则 188
6.2.2 一元运算符重载 189
6.2.3 二元运算符重载 191
6.2.4 几个特殊运算符的重载 194
6.2.5 运算符重载与类型转换 198
6.3 虚函数 199
6.3.1 问题的提出 200
6.3.2 虚函数的运用 201
6.3.3 虚函数的实现 204
6.3.4 虚函数和构造函数 205
6.3.5 虚析构函数 206
6.3.6 对象切片问题 209
6.3.7 纯虚函数 210
6.3.8 抽象类 211
6.4 本章小结 214
习题 215
第7章 输入/输出流类 223
7.1 流类及流类间的关系 223
7.2 从标准输入/输出流中读/写数据 225
7.2.1 从标准输入获取数据 226
7.2.2 将数据写入标准输出 229
7.3 顺序文件的输入/输出 231
7.3.1 文件的打开与关闭 231
7.3.2 将数据写入文件 233
7.3.3 从文件中读取数据 234
7.4 文件的随机读取 238
7.4.1 文件的读取指针 238
7.4.2 随机读取数据文件 239
7.4.3 从串流中读取数据 240
7.4.4 自定义输入运算符 241
7.5 文件的随机写入 242
7.5.1 文件的写指针 242
7.5.2 随机写 243
7.5.3 将数据写入串流 245
7.5.4 输出运算符重载 246
7.6 二进制文件的读取 247
7.7 本章小结 249
习题 249
第8章 Windows C++编程基础 254
8.1 Windows编程基础知识 254
8.1.1 窗口 255
8.1.2 句柄 255
8.1.3 消息 255
8.1.4 事件驱动 256
8.1.5 MFC类库简介 256
8.2 MFC应用程序基本架构 258
8.2.1 用MFC“应用程序向导”自动生成框架程序 258
8.2.2 MFC程序的类结构 259
8.2.3 MFC程序的文件组成 260
8.2.4 应用程序类及其主要成员函数InitInstance() 261
8.2.5 文档类、视图类及文档/视图设计模式 262
8.2.6 框架窗口类 263
8.2.7 子窗口类 264
8.2.8 MFC的消息处理机制 264
8.3 菜单、快捷键、工具栏和状态栏 265
8.3.1 菜单 265
8.3.2 几个建立菜单的程序实例 266
8.3.3 快捷键 270
8.3.4 工具栏 272
8.3.5 状态栏 276
8.4 图形界面编辑 278
8.4.1 图形设备接口 278
8.4.2 伪设备 279
8.4.3 设备语义 279
8.4.4 CDC类 280
8.4.5 触发WM_PAINT绘图消息 281
8.4.6 采用CDC类绘图的实例 281
8.4.7 字体类和文本输出实例 282
8.5 文件操作 283
8.5.1 文件与CFile类 283
8.5.2 文件操作方法 283
8.5.3 序列化 284
8.6 对话框 291
8.6.1 特殊的窗口——对话框 291
8.6.2 对话框的运行机制 291
8.6.3 控件 292
8.6.4 创建基于对话框的MFC应用程序 293
8.6.5 对话框数据交换和数据验证(DDX/DDV) 299
8.6.6 基本消息对话框 303
8.6.7 通用对话框 303
8.7 本章小结 307
习题 307