第1章 C++基础知识 1
1.1 C++与Visual C++语言 1
1.2 C++程序简介 2
1.2.1 一个简单的程序 2
1.2.2 C++程序的基本要素 2
1.2.3 C++程序的书写规则 3
1.3 C++程序的开发步骤与上机实践 4
1.3.1 C++程序的开发步骤 4
1.3.2 C++程序的上机实践 4
1.4 信息在计算机中的表示 5
1.4.1 进位记数制 5
1.4.2 带符号数在计算机中的表示 9
1.4.3 字符在计算机中的表示 13
练习题 14
第2章 基本数据类型与表达式 16
2.1 数据类型 16
2.2 常量和变量 17
2.2.1 常量 17
2.2.2 变量 18
2.3 整型数据 20
2.3.1 整型常量 20
2.3.2 整型变量 21
2.4 浮点型数据 23
2.4.1 浮点型常量 23
2.4.2 浮点型变量 23
2.5 字符型数据 24
2.5.1 字符型常量 24
2.5.2 字符型变量 25
2.5.3 字符串常量 27
2.6 类型转换 27
2.6.1 不同类型数据间的混合算术运算 27
2.6.2 赋值时的类型转换 28
2.6.3 强制类型转换符 31
2.7 运算符与表达式 32
2.7.1 算术运算符与算术表达式 32
2.7.2 关系运算符与关系表达式 32
2.7.3 逻辑运算符与逻辑表达式 33
2.7.4 赋值运算符与赋值表达式 35
2.7.5 自增运算符与自减运算符 36
2.7.6 逗号运算符与逗号表达式 38
2.7.7 sizeof()运算符及表达式 38
2.7.8 表达式中运算符的运算顺序 38
2.8 简单的输入/输出语句 39
2.8.1 十进制整数、实数与字符数据的输入 40
2.8.2 十六进制或八进制数据的输入 42
2.8.3 数据的输出 43
练习题 44
第3章 基本流程控制结构 47
3.1 结构化程序设计基础 47
3.1.1 结构化程序设计 47
3.1.2 基本控制结构 48
3.1.3 C++语言中语句的分类 49
3.2 选择结构语句 50
3.2.1 if语句 50
3.2.2 条件运算符“?:” 55
3.2.3 switch语句 57
3.3 循环结构语句 60
3.3.1 while语句 60
3.3.2 do…while语句 62
3.3.3 for语句 64
3.3.4 3种循环的比较及适用场合 66
3.3.5 多重循环 67
3.4 控制执行顺序的语句 68
3.4.1 break语句 68
3.4.2 continue语句 70
3.4.3 goto语句 71
3.4.4 exit()和abort()函数 71
3.5 综合应用举例 72
练习题 75
第4章 函数 84
4.1 函数概述 84
4.2 函数的定义与调用 85
4.2.1 函数的定义 85
4.2.2 函数的调用 88
4.2.3 引用作为函数参数 92
4.3 函数的嵌套调用 93
4.4 函数的递归调用 94
4.5 内联函数 97
4.6 重载函数 98
4.7 带有默认参数的函数 99
4.8 局部变量和全局变量 100
4.8.1 局部变量 101
4.8.2 全局变量 102
4.9 变量的存储类别 105
4.9.1 变量的生存期和存储类别 105
4.9.2 auto型变量 105
4.9.3 static局部变量 106
4.9.4 register型变量 107
4.9.5 extern型变量 108
4.9.6 用static声明全局变量 109
4.10 内部函数和外部函数 110
4.10.1 内部函数 110
4.10.2 外部函数 111
练习题 111
第5章 编译预处理 121
5.1 宏定义 121
5.1.1 不带参数的宏定义 121
5.1.2 带参数的宏定义 123
5.2 文件包含 125
5.3 条件编译 126
练习题 128
第6章 数组 133
6.1 数组的定义和引用 133
6.1.1 一维数组的定义 133
6.1.2 一维数组的引用 134
6.1.3 一维数组的初始化 135
6.1.4 一维数组程序举例 136
6.2 二维数组的定义和引用 139
6.2.1 二维数组的定义 139
6.2.2 二维数组的引用 139
6.2.3 二维数组的初始化 139
6.2.4 二维数组程序举例 140
6.3 数组作为函数的参数 142
6.3.1 数组元素作为函数的实参 142
6.3.2 数组名作为函数的实参 143
6.3.3 二维数组作为函数的参数 147
6.4 字符数组 148
6.4.1 字符数组的定义 148
6.4.2 字符数组的初始化 149
6.4.3 字符串和字符串结束标志 150
6.4.4 字符数组的输入/输出 150
6.4.5 字符串处理函数 152
6.4.6 字符数组的应用举例 156
练习题 161
第7章 指针 172
7.1 指针与地址 172
7.1.1 指针的概念 172
7.1.2 指针变量的定义 173
7.1.3 指针变量作为函数参数 176
7.2 指针与一维数组 177
7.2.1 通过指针引用一维数组中的元素 177
7.2.2 通过指针在函数间传递一维数组 179
7.3 字符指针与字符串 180
7.3.1 字符数组与字符指针 180
7.3.2 字符串操作的特点 181
7.4 指针与函数 183
7.4.1 函数指针变量 183
7.4.2 指针型函数 186
7.5 指针与二维数组 187
7.5.1 二维数组的地址 187
7.5.2 通过指针引用二维数组中的元素 190
7.6 指针数组与指向指针的指针 192
7.6.1 指针数组 192
7.6.2 指针的指针 194
7.6.3 多级指针小结 196
7.7 动态存储分配 197
练习题 199
第8章 结构体和共用体 210
8.1 结构体 210
8.1.1 结构体与结构体类型的声明 210
8.1.2 结构体类型变量 211
8.1.3 结构体数组和指针 214
8.2 链表 218
8.2.1 正向链表 218
8.2.2 建立反向链表 229
8.3 共用体 235
8.3.1 共用体类型与共用体变量 235
8.3.2 共用体变量的引用 236
8.4 枚举 237
8.5 用typedef声明类型 239
练习题 240
第9章 类和对象 247
9.1 面向对象程序设计概述 247
9.1.1 面向对象 247
9.1.2 面向对象中的主要概念 248
9.1.3 面向对象的程序设计 249
9.2 类的声明和对象的定义 250
9.2.1 类的声明 250
9.2.2 对象的定义 252
9.2.3 对象成员的访问 253
9.2.4 用类的指针访问对象成员 255
9.2.5 用对象的引用变量访问对象成员 256
9.3 成员函数 256
9.3.1 重载类的成员函数 256
9.3.2 默认参数的类的成员函数 257
9.4 this指针及在成员函数中访问成员函数 258
9.4.1 this指针 258
9.4.2 在成员函数中访问成员函数 261
9.5 类和对象的应用举例 262
练习题 266
第10章 构造函数和析构函数 271
10.1 构造函数 271
10.1.1 构造函数的作用 271
10.1.2 构造函数的重载 272
10.1.3 默认的构造函数 273
10.2 析构函数 275
10.3 构造对象的顺序 278
10.4 对象的动态建立和释放 279
10.5 复制构造函数 280
10.6 临时对象 285
10.7 面向对象的程序设计应用举例 286
练习题 292
第11章 静态成员与友元 301
11.1 静态成员 301
11.2 静态成员函数 302
11.3 友元函数 303
11.3.1 将普通函数声明为友元函数 303
11.3.2 将另一类的成员函数声明为类的友元函数 304
11.4 友元类 306
练习题 307
第12章 运算符重载 313
12.1 运算符重载的概念 313
12.2 将运算符重载为成员函数 315
12.2.1 将双目运算符重载为成员函数 315
12.2.2 将单目运算符重载为成员函数 317
12.2.3 将赋值运算符重载为成员函数 320
12.3 将运算符重载为友元函数 326
12.3.1 将双目运算符重载为友元函数 326
12.3.2 将单目运算符重载为友元函数 328
12.4 类型转换运算符函数 329
12.5 重载流插入和流提取运算符 331
12.6 综合实例 334
练习题 337
第13章 继承和派生 343
13.1 继承与派生基础 343
13.1.1 继承与派生的概念 343
13.1.2 派生类的定义 344
13.1.3 派生类的3种继承方式 345
13.2 派生类的构造函数和析构函数 349
13.2.1 单继承派生类的构造函数 349
13.2.2 多继承派生类的构造函数 350
13.2.3 有子对象的派生类的构造函数 352
13.3 继承的冲突与支配 354
13.3.1 冲突 354
13.3.2 支配 356
13.3.3 赋值兼容规则 357
13.4 虚基类 358
13.4.1 虚基类的定义 358
13.4.2 虚基类的初始化 359
练习题 361
第14章 虚函数 367
14.1 多态性的概念 367
14.2 虚函数简介 367
14.3 纯虚函数与抽象类 372
练习题 376
第15章 输入输出流 380
15.1 C++的输入输出流 380
15.1.1 ios类的结构 380
15.1.2 输入流 381
15.1.3 输出流 383
15.2 格式化输入与输出 384
15.2.1 输入的格式化 384
15.2.2 输出的格式化 384
15.3 文件流 386
15.3.1 文件的概念 386
15.3.2 文件的打开与关闭 387
15.3.3 对文本文件的操作 389
15.3.4 对二进制文件的操作 391
练习题 394
第16章 C++工具 398
16.1 模板 398
16.1.1 模板的概念 398
16.1.2 函数模板 399
16.1.3 类模板 400
16.2 异常处理 401
16.2.1 异常的概念 401
16.2.2 异常处理的机制 402
练习题 405
附录A ASCⅡ字符集及其代码对照表 407
附录B 库函数 409
参考文献 413