第1章 C++语言概述 1
1.1 面向对象语言简介 1
1.1.1 面向对象的概念 1
1.1.2 编程语言的发展 2
1.1.3 面向对象语言的特点 3
1.2 C语言与C++语言的关系 4
1.2.1 C++语言对C语言的改进 4
1.2.2 C++语言对面向对象方法的支持 5
1.3 C++语言的词法和词法规则 5
1.3.1 C++语言的字符集 5
1.3.2 单词及词法规则 5
1.4 C++程序结构上的特点 7
1.4.1 C++程序的两个实例 7
1.4.2 C++程序结构特点 8
1.4.3 C++程序的书写格式 9
1.5 C++程序的实现 9
1.5.1 C++程序的编辑、编译和运行 9
1.5.2 Visual C++6.0编译系统的用法简介 11
1.6 上机练习指导 14
习题1 17
第2章 变量和常量 20
2.1 数据类型 20
2.1.1 基本数据类型 20
2.1.2 自定义数据类型 21
2.2 变量 21
2.2.1 变量的名字 21
2.2.2 变量的类型 22
2.2.3 变量的值 22
2.3 常量 23
2.3.1 整型常量 23
2.3.2 浮点型常量 24
2.3.3 字符型常量 24
2.3.4 字符串常量 25
2.3.5 枚举常量 26
2.3.6 常量的定义格式 28
2.4 数组 28
2.4.1 数组的定义格式 29
2.4.2 数组元素的表示 29
2.4.3 数组的赋值 30
2.4.4 字符数组 31
2.5 键盘输入和屏幕输出 33
2.5.1 键盘输入 33
2.5.2 屏幕输出 34
2.6 上机练习指导 36
习题2 39
第3章 运算符和表达式 42
3.1 运算符的种类及其功能 42
3.1.1 算术运算符 42
3.1.2 关系运算符 43
3.1.3 逻辑运算符 43
3.1.4 位操作运算符 44
3.1.5 赋值运算符 44
3.1.6 其他运算符 45
3.2 运算符的优先级和结合性 47
3.2.1 运算符的优先级 47
3.2.2 运算符的结合性 48
3.3 表达式 49
3.3.1 表达式的种类 49
3.3.2 表达式的值和类型 50
3.4 类型转换 56
3.4.1 保值的隐式转换 56
3.4.2 强制转换 56
3.5 类型定义 57
3.6 上机练习指导 58
习题3 61
第4章 语句和预处理 64
4.1 表达式语句和复合语句 64
4.1.1 表达式语句和空语句 64
4.1.2 复合语句和分程序 65
4.2 选择语句 65
4.2.1 条件语句 65
4.2.2 开关语句 68
4.3 循环语句 72
4.3.1 while循环语句 72
4.3.2 do-while循环语句 73
4.3.3 for循环语句 74
4.3.4 多重循环 77
4.4 转向语句 80
4.4.1 goto语句 80
4.4.2 break语句 81
4.4.3 continue语句 82
4.5 预处理功能 82
4.5.1 宏定义命令 83
4.5.2 文件包含命令 85
4.5.3 条件编译命令 86
4.6 上机练习指导 88
习题4 93
第5章 函数和存储类 99
5.1 函数的定义和说明 99
5.1.1 函数的定义格式 100
5.1.2 函数的说明方法 101
5.2 函数的参数和返回值 102
5.2.1 函数参数的求值顺序 102
5.2.2 设置函数参数的默认值 102
5.2.3 函数的返回值 104
5.3 函数的调用方式 105
5.3.1 函数的传值调用 105
5.3.2 函数的引用调用 106
5.4 函数的嵌套调用和递归调用 106
5.4.1 函数的嵌套调用 106
5.4.2 函数的递归调用 108
5.5 内联函数和重载函数 111
5.5.1 内联函数 111
5.5.2 重载函数 113
5.6 标识符的作用域 115
5.6.1 作用域规则 115
5.6.2 作用域种类 116
5.6.3 关于重新定义标识符的作用域规定 116
5.7 变量的存储类 118
5.7.1 自动类变量和寄存器类变量 118
5.7.2 外部类变量 119
5.7.3 静态类变量 120
5.8 函数的存储类 123
5.8.1 内部函数 123
5.8.2 外部函数 125
5.9 上机练习指导 126
习题5 134
第6章 指针与引用 140
6.1 指针 140
6.1.1 指针的概念 140
6.1.2 指针定义格式 141
6.1.3 指针的赋值 142
6.1.4 指针的运算 142
6.2 指针与数组 145
6.2.1 数组名是一个常量指针 145
6.2.2 数组元素的指针表示 145
6.2.3 字符数组、字符指针和字符串处理函数 148
6.2.4 指向数组的指针和指针数组 152
6.3 指针与函数 154
6.3.1 指针用作函数参数 154
6.3.2 指向函数的指针和指针函数 155
6.4 引用 157
6.4.1 引用的概念 157
6.4.2 引用的应用 159
6.5 上机练习指导 163
习题6 170
第7章 结构和联合 176
7.1 结构 176
7.1.1 结构和结构变量的定义 176
7.1.2 结构变量成员的表示 178
7.1.3 结构变量的赋值 178
7.1.4 结构变量的运算 179
7.2 结构与数组 180
7.2.1 数组作为结构成员 181
7.2.2 结构变量作为数组元素 181
7.3 结构与函数 184
7.3.1 结构变量和指向结构变量的指针作为函数参数 184
7.3.2 结构变量和指向结构变量的指针作为函数返回值 187
7.4 联合 188
7.4.1 联合的概念 188
7.4.2 联合的应用 191
7.5 上机练习指导 194
习题7 196
第8章 类和简单对象 201
8.1 类的定义 201
8.1.1 类的概念 201
8.1.2 类的定义格式 201
8.1.3 类定义举例 204
8.2 对象的定义和成员表示 205
8.2.1 对象的定义格式 205
8.2.2 对象的成员表示 206
8.3 构造函数和析构函数 208
8.3.1 构造函数和析构函数的特点及功能 208
8.3.2 拷贝构造函数和默认拷贝构造函数 210
8.3.3 拷贝构造函数的其他用处 212
8.4 成员函数的特征 214
8.4.1 内联函数和外联函数 214
8.4.2 成员函数的重载性 215
8.4.3 成员函数可以设置参数默认值 216
8.5 静态成员 217
8.5.1 静态数据成员 218
8.5.2 静态成员函数 220
8.6 常成员 221
8.6.1 常数据成员 221
8.6.2 常成员函数 223
8.7 指向成员的指针 224
8.7.1 指向数据成员的指针 224
8.7.2 指向成员函数的指针 224
8.8 友元函数和友元类 226
8.8.1 友元函数 226
8.8.2 友元类 227
8.9 上机练习指导 229
习题8 234
第9章 复杂对象 243
9.1 对象指针和对象引用 243
9.1.1 指向对象的指针和对象引用 243
9.1.2 this指针 245
9.2 对象数组和对象指针数组 246
9.2.1 对象数组 247
9.2.2 指向对象数组的指针 248
9.2.3 对象指针数组 250
9.3 常对象 251
9.3.1 一般常量 251
9.3.2 常对象 252
9.4 子对象和堆对象 254
9.4.1 子对象 254
9.4.2 堆对象 256
9.5 类型转换和转换函数 262
9.5.1 类型的隐含转换 262
9.5.2 构造函数的类型转换功能 262
9.5.3 类型转换函数 264
9.6 类作用域和对象的生存期 265
9.6.1 类作用域 265
9.6.2 对象的生存期 265
9.6.3 局部类和嵌套类 267
9.7 类和对象的应用实例 270
9.8 上机练习指导 275
习题9 281
第10章 继承性和派生类 289
10.1 基类和派生类 289
10.1.1 派生类的定义格式 290
10.1.2 继承的3种方式 291
10.1.3 基类与派生类的关系 294
10.2 单继承 295
10.2.1 派生类对基类成员的访问权限 295
10.2.2 派生类的构造函数和析构函数 299
10.2.3 子类型和赋值兼容规则 304
10.3 多继承 307
10.3.1 多继承的概念 307
10.3.2 多继承派生类的构造函数 308
10.3.3 多继承中的二义性问题 311
10.4 虚基类 315
10.4.1 虚基类的概念 316
10.4.2 虚基类及其派生类的构造函数 317
10.5 应用实例 318
10.6 上机练习指导 321
习题10 327
第11章 多态性和虚函数 335
11.1 函数重载 335
11.2 运算符重载 337
11.2.1 运算符重载中的几个问题 337
11.2.2 运算符重载函数的两种形式 338
11.2.3 其他运算符重载举例 343
11.3 静态联编和动态联编 347
11.3.1 静态联编 347
11.3.2 动态联编 348
11.4 虚函数 348
11.5 纯虚函数和抽象类 355
11.5.1 纯虚函数 355
11.5.2 抽象类 356
11.6 虚析构函数 361
11.7 上机练习指导 362
习题11 371
第12章 模板 377
12.1 模板的概念 377
12.1.1 什么是模板 377
12.1.2 为什么引进模板 377
12.2 函数模板 379
12.2.1 函数模板的定义格式 379
12.2.2 函数模板的应用举例 380
12.3 类模板 383
12.3.1 类模板的定义格式 383
12.3.2 类模板的应用举例 384
12.4 类模板的应用 390
12.4.1 类模板的对象或引用作为函数参数 390
12.4.2 类模板用作基类 391
12.5 上机练习指导 398
习题12 403
第13章 C++语言的I/O流类库 408
13.1 屏幕输出操作 410
13.1.1 使用预定义的插入符 410
13.1.2 使用成员函数put()输出一个字符 412
13.1.3 使用成员函数write()输出一个字符串 413
13.2 键盘输入操作 414
13.2.1 使用预定义的提取符 414
13.2.2 使用成员函数get()获取一个字符 415
13.2.3 使用成员函数getline()获取一行字符 416
13.2.4 使用成员函数read()读取多行字符 417
13.3 格式化输入和输出 418
13.3.1 使用流对象的成员函数进行格式输出 418
13.3.2 使用控制符进行格式输出 421
13.4 插入符和提取符的重载 423
13.5.2 文本文件的读/写操作 426
13.5.3 二进制文件的读/写操作 429
13.5.4 随机访问数据文件 431
13.5.5 文件操作的其他函数 434
13.6 字符串流 437
13.6.1 ostrstream类的构造函数 437
13.6.2 istrstream类的构造函数 439
13.7 流错误的处理 440
13.7.1 状态字和状态函数 440
13.7.2 清除/设置流状态位 441
13.8 上机练习指导 441
习题13 443
附录A Visual C++6.O编译系统部分功能介绍 446
A.1 VisualC++6.0主界面 446
A.2 C++单文件应用程序的实现 456
A.3 C++多文件应用程序的实现 457