第1章 C++与面向对象程序概述 1
1.1 程序设计语言的发展 1
1.1.1 机器语言 1
1.1.2 汇编语言 1
1.1.3 高级语言 2
1.2 面向对象程序设计的特点 3
1.2.1 面向对象程序设计的基本概念 3
1.2.2 面向对象程序设计的特点 3
1.3 C++语言的特点 4
1.4 简单的C++程序 4
1.4.1 cout标准输出 5
1.4.2 cin标准输入 5
1.5 Visual C++6.0编程环境简介 6
1.5.1 Visual C++6.0界面介绍 6
1.5.2 编辑、编译和运行程序 7
1.5.3 程序调试 9
1.6 小结 10
习题 10
第2章 数据类型与表达式 11
2.1 基本数据类型 11
2.1.1 整型数据 11
2.1.2 实型数据 12
2.1.3 字符型数据 12
2.1.4 布尔型数据 12
2.2 常量与变量 13
2.2.1 常量 13
2.2.2 变量 16
2.3 运算符与表达式 17
2.3.1 算术运算符与算术表达式 17
2.3.2 赋值运算符与赋值表达式 20
2.3.3 关系运算符与关系表达式 21
2.3.4 逻辑运算符与逻辑表达式 21
2.3.5 条件运算符 22
2.3.6 sizeof运算符 23
2.4 位运算符 23
2.5 C++的构造类型 25
2.5.1 结构 25
2.5.2 联合 27
2.5.3 枚举 29
2.6 小结 30
习题 30
第3章 C++控制语句 32
3.1 C++语句概述 32
3.2 if语句实现选择结构 33
3.2.1 引例 33
3.2.2 if语句的基本结构 33
3.2.3 if语句的嵌套 34
3.2.4 用if语句实现多分支 35
3.2.5 程序实例 36
3.3 switch语句实现多分支结构 38
3.3.1 引例 38
3.3.2 switch语句的一般结构 39
3.3.3 程序实例 40
3.4 循环结构 41
3.4.1 引例 41
3.4.2 for语句的一般格式 42
3.4.3 while语句实现循环 42
3.4.4 用do-while语句实现循环 43
3.4.5 continue语句、break语句与goto语句 44
3.4.6 程序实例 46
3.5 小结 48
习题 49
第4章 函数 50
4.1 函数的定义与使用 50
4.1.1 引例 50
4.1.2 函数的定义 51
4.1.3 函数的声明与调用 52
4.2 函数的参数传递 53
4.2.1 值传递 53
4.2.2 使用引用 54
4.3 函数的嵌套调用 56
4.4 函数的递归调用 59
4.5 内联函数 61
4.6 函数重载 62
4.7 带默认参数值的函数 64
4.7.1 带默认参数值的函数 64
4.7.2 带默认参数值函数产生的二义性 65
4.8 变量的存储类别 66
4.8.1 内部变量与外部变量 66
4.8.2 变量的存储类别 68
4.9 程序实例 70
4.10 小结 72
习题 73
第5章 数组 74
5.1 一维数组 74
5.1.1 引例 74
5.1.2 一维数组的定义和引用 75
5.1.3 一维数组的初始化 76
5.1.4 一维数组应用实例 76
5.2 二维数组 78
5.2.1 引例 78
5.2.2 二维数组的定义与引用 79
5.2.3 二维数组的初始化 80
5.2.4 二维数组应用实例 81
5.3 字符数组 82
5.3.1 字符数组的定义 82
5.3.2 字符数组的初始化 83
5.3.3 字符数组的引用 83
5.3.4 字符串与字符串结束标志 84
5.3.5 常用的字符串处理函数 85
5.3.6 字符数组应用实例 89
5.4 小结 90
习题 90
第6章 指针 92
6.1 地址与指针的概念 92
6.1.1 内存地址 92
6.1.2 变量的地址 92
6.1.3 变量的指针 92
6.2 指针变量及指针运算 93
6.2.1 指针变量 93
6.2.2 指针运算 95
6.2.3 指针变量作为函数参数 97
6.3 指针与数组 98
6.3.1 用指针处理数组 98
6.3.2 数组名作为函数的参数 100
6.3.3 指针数组与多级指针 102
6.4 指针与字符串 104
6.4.1 字符串的表示形式 104
6.4.2 字符指针作函数参数 105
6.4.3 main函数的参数 107
6.5 动态内存分配 108
6.5.1 动态分配一个数据的存储空间 109
6.5.2 动态分配多个连续的数据存储空间 109
6.6 程序实例 110
6.7 小结 113
习题 114
第7章 类与对象 115
7.1 类与对象概述 115
7.1.1 类与对象的概念 115
7.1.2 引例 115
7.1.3 类的声明 117
7.1.4 成员的访问控制 118
7.1.5 类的成员函数 120
7.2 构造函数与析构函数 121
7.2.1 引例 122
7.2.2 构造函数 123
7.2.3 析构函数 125
7.2.4 拷贝构造函数 128
7.3 类的组合 129
7.4 友元 133
7.4.1 友元函数 133
7.4.2 友元类 135
7.5 静态成员 136
7.5.1 静态数据成员 137
7.5.2 静态成员函数 140
7.6 常对象与常成员函数 142
7.6.1 常对象 142
7.6.2 常成员函数 143
7.7 对象数组与对象指针 144
7.7.1 对象数组 144
7.7.2 对象指针 146
7.8 this指针 147
7.9 程序实例 150
7.10 小结 156
习题 157
第8章 类的继承 159
8.1 类的继承与派生 159
8.1.1 继承与派生的基本概念 159
8.1.2 引例 160
8.1.3 派生类的声明 162
8.2 类的继承方式 162
8.2.1 公有继承 163
8.2.2 保护继承 164
8.2.3 私有继承 166
8.3 派生类的构造过程和析构过程 168
8.3.1 派生类的构造过程 168
8.3.2 派生类的析构过程 170
8.3.3 程序实例 171
8.4 多继承 175
8.4.1 多继承的构造与析构 175
8.4.2 多继承的二义性 177
8.4.3 虚基类 181
8.4.4 程序实例 185
8.5 小结 187
习题 187
第9章 多态性 191
9.1 运算符重载 191
9.1.1 引例 191
9.1.2 运算符重载的格式与规则 194
9.2 运算符重载为类的成员函数 195
9.2.1 双目运算符重载 195
9.2.2 单目运算符重载 197
9.2.3 赋值运算符重载 198
9.3 运算符重载为类的友元函数 201
9.3.1 问题的提出 201
9.3.2 运算符重载为友元函数 202
9.4 虚函数 204
9.4.1 用虚函数实现动态多态 204
9.4.2 虚函数实现动态多态的机制 207
9.4.3 虚析构函数 209
9.4.4 纯虚函数与抽象类 211
9.5 程序实例 212
9.6 小结 219
习题 220
第10章 模板 224
10.1 函数模板 224
10.1.1 问题的提出 224
10.1.2 函数模板的定义 224
10.1.3 函数模板产生的二义性 227
10.1.4 模板函数的覆盖 228
10.2 类模板 229
10.2.1 问题的提出 229
10.2.2 类模板定义格式 230
10.2.3 类模板的默认参数 233
10.3 程序实例 234
10.4 小结 238
习题 239
第11章 输入输出流 241
11.1 输入输出流概述 241
11.1.1 流的概念 241
11.1.2 流类库的结构 242
11.2 插入运算符及提取运算符 245
11.3 格式化输入输出 245
11.3.1 输出宽度控制:setw和width 245
11.3.2 填充字符控制:setfill和fill 246
11.3.3 输出精度控制:setprecision和precision 247
11.3.4 其他格式状态 248
11.4 文件的输入输出 249
11.4.1 打开文件 250
11.4.2 写入文件 251
11.4.3 读取文件 252
11.4.4 文件读写位置指针 254
11.4.5 错误处理函数 256
11.4.6 关闭文件 256
11.5 输入输出文件流fstream 256
11.6 小结 258
习题 258
索引 260
参考文献 263