第1章 C++语言概述 1
1.1面向对象语言简介 1
1.1.1面向对象的概念 1
1.1.2编程语言的发展 2
1.1.3面向对象语言的特点 3
1.2面向过程与面向对象的区别 4
1.2.1面向过程方法面临的问题 4
1.2.2面向对象方法的特点 5
1.3 C语言与C++语言的关系 6
1.3.1 C++对C语言的改进 6
1.3.2 C++语言对面向对象方法的支持 7
1.4 C++语言的词法和词法规则 7
1.4.1 C++语言的字符集 7
1.4.2单词及词法规则 8
1.5 C++程序结构上的特点 10
1.5.1 C++程序的两个实例 10
1.5.2 C++程序结构特点 11
1.5.3 C++程序的书写格式 11
1.6 C++程序的实现 12
1.6.1 C++程序的编辑、编译和运行 12
1.6.2 Visual C++5.0编译系统的用法简介 13
练习题 17
第2章 变量和常量 21
2.1基本数据类型 21
2.2变量 22
2.2.1变量的名字 22
2.2.2变量的类型 23
2.2.3变量的值 23
2.3常量 24
2.3.1整型常量 24
2.3.2浮点型常量 25
2.3.3字符型常量 25
2.3.4字符串常量 26
2.3.5枚举常量 27
2.3.6常量的定义格式 28
2.4数组 29
2.4.1数组的定义格式 30
2.4.2数组元素的表示 30
2.4.3数组的赋值 31
2.4.4字符数组 32
2.5输入和输出 34
2.5.1键盘输入 34
2.5.2屏幕显示 35
练习题 37
第3章 运算符和表达式 41
3.1运算符的种类及其功能 41
3.1.1算术运算符 41
3.1.2关系运算符 42
3.1.3逻辑运算符 42
3.1.4位操作运算符 43
3.1.5赋值运算符 43
3.1.6其他运算符 44
3.2运算符的优先级和结合性 46
3.2.1运算符的优先级 47
3.2.2运算符的结合性 48
3.3表达式的种类 48
3.4表达式的值和类型 49
3.4.1算术表达式 49
3.4.2关系表达式 51
3.4.3逻辑表达式 52
3.4.4条件表达式 53
3.4.5赋值表达式 54
3.4.6逗号表达式 55
3.5类型转换 56
3.5.1保值的隐式转换 56
3.5.2强制转换 56
3.6类型定义 57
练习题 58
第4章 语句和预处理 62
4.1表达式语句和复合语句 62
4.1.1表达式语句和空语句 62
4.1.2复合语句和分程序 63
4.2选择语句 63
4.2.1条件语句 63
4.2.2开关语句 67
4.3循环语句 70
4.3.1 while循环语句 70
4.3.2 do-while循环语句 72
4.3.3 for循环语句 73
4.3.4多重循环 76
4.4转向语句 79
4.4.1 goto语句 80
4.4.2 break语句 81
4.4.3 continue语句 81
4.5预处理功能 82
4.5.1宏定义命令 83
4.5.2文件包含命令 85
4.5.3条件编译命令 86
练习题 88
第5章 函数和存储类 94
5.1函数的定义和说明 94
5.1.1函数的定义格式 95
5.1.2函数的说明方法 96
5.2函数的参数和返回值 97
5.2.1函数参数的求值顺序 97
5.2.2设置函数参数的默认值 98
5.2.3函数的返回值 100
5.3函数的调用方式 100
5.3.1函数的传值调用 101
5.3.2函数的引用调用 101
5.4函数的嵌套调用和递归调用 102
5.4.1函数的嵌套调用 102
5.4.2函数的递归调用 104
5.5内联函数和重载函数 108
5.5.1内联函数 108
5.5.2重载函数 109
5.6标识符的作用域 112
5.6.1作用域规则 112
5.6.2作用域种类 113
5.6.3关于重新定义标识符的作用域规定 113
5.7变量的存储类 115
5.7.1自动类变量和寄存器类变量 115
5.7.2外部类变量 117
5.7.3静态类变量 118
5.8函数的存储类 121
5.8.1内部函数 121
5.8.2外部函数 122
练习题 124
第6章 指针与引用 130
6.1指针的概念 130
6.1.1什么是指针 130
6.1.2指针定义格式 132
6.1.3指针的赋值 132
6.1.4指针的运算 133
6.2指针与数组 135
6.2.1数组名是一个常量指针 135
6.2.2数组元素的指针表示 136
6.2.3字符数组、字符指针和字符串处理函数 139
6.2.4指向数组的指针和指针数组 143
6.3指针与函数 145
6.3.1指针用作函数参数 146
6.3.2指向函数的指针和指针函数 147
6.4引用的概念 149
6.4.1引用和引用的建立格式 149
6.5引用的应用 151
6.5.1引用作函数参数 151
6.5.2引用作为函数的返回值 153
6.5.3用const限定引用保护实参不被修改 154
练习题 155
第7章 结构 161
7.1结构的概念 161
7.1.1结构和结构变量的定义 161
7.1.2结构变量成员的表示 163
7.1.3结构变量的赋值 163
7.1.4结构变量的运算 164
7.2结构与数组 166
7.2.1数组作结构成员 166
7.2.2结构变量作数组元素 166
7.3结构与函数 169
7.3.1结构变量和指向结构变量的指针作函数参数 169
7.3.2结构变量和指向结构变量的指针作函数返回值 173
7.4联合 174
7.4.1联合的概念 174
7.4.2联合的应用 177
练习题 181
第8章 类和简单对象 185
8.1类的定义 185
8.1.1类的概念 185
8.1.2类的定义格式 185
8.1.3类的定义举例 188
8.2对象的定义和成员表示 190
8.2.1 对象的定义格式 190
8.2.2 对象的成员表示 190
8.3 对象的初始化 192
8.3.1构造函数和析构函数 193
8.3.2拷贝造函数和默认拷贝构造函数 195
8.3.3拷贝构造函数的其他用处 197
8.4成员函数的特征 199
8.4.1内联函数和外联函数 199
8.4.2成员函数的重载性 201
8.4.3成员函数可以设置默认参数 202
8.5静态成员 203
8.5.1静态数据成员 203
8.5.2静态成员函数 206
8.6友元 207
8.6.1友元函数 208
8.6.2友元类 209
8.7类的作用域和对象的生存期 211
8.7.1类的作用域 211
8.7.2对象的生存期 211
8.7.3局部类和嵌套类 213
练习题 217
第9章 复杂对象 225
9.1对象指针和对象引用 225
9.1.1指向类的成员的指针 225
9.1.2指向对象的指针和对象引用 227
9.1.3 this指针 230
9.2对象数组和对象指针数组 231
9.2.1对象数组 231
9.2.2指向对象数组的指针 233
9.2.3对象指针数组 235
9.3常类型 236
9.3.1一般常量和对象常量 236
9.3.2常指针和常引用 237
9.3.3类的常成员 239
9.4子对象和堆对象 242
9.4.1子对象 242
9.4.2堆对象 244
9.5类型转换和转换函数 250
9.5.1类型的隐含转换 250
9.5.2构造函数的类型转换功能 251
9.5.3类型转换函数 252
9.6类和对象的应用实例 253
练习题 258
第10章 继承性和派生类 268
10.1基类和派生类 268
10.1.1派生类的定义格式 269
10.1.2派生类的三种继承方式 270
10.1.3基类与派生类的关系 274
10.2单继承 275
10.2.1派生类对基类成员的访问权限 275
10.2.2派生类的构造函数和析构函数 278
10.2.3子类型 285
10.3多继承 287
10.3.1多继承的概念 287
10.3.2多继承派生类的构造函数 288
10.3.3多继承中的二义性问题 291
10.4虚基类 296
10.4.1虚基类的概念 297
10.4.2虚基类的构造函数 298
10.5应用实例 300
练习题 303
第11章 多态性和虚函数 311
11.1函数重载 311
11.2运算符重载 313
11.2.1运算符重载中的几个问题 314
11.2.2运算符重载函数的两种形式 314
11.2.3其他运算符的重载举例 319
11.3静态联编和动态联编 324
11.3.1静态联编 324
11.3.2动态联编 325
11.4虚函数 325
11.5纯虚函数和抽象类 332
11.5.1纯虚函数 332
11.5.2抽象类 334
11.6虚析构函数 339
练习题 341
第12章 模板 348
12.1模板的概念 348
12.1.1什么是模板 348
12.1.2为什么引进模板 348
12.2函数模板 350
12.2.1函数模板的定义格式 350
12.2.2函数模板的应用举例 351
12.3类模板 354
12.3.1类模板的定义格式 354
12.3.2类模板的应用举例 356
12.4类模板的应用 362
12.4.1类模板的对象或引用作函数参数 362
12.4.2类模板可用作基类 363
练习题 371
第13章 C++的I/O流类库 376
13.1屏幕输出操作 378
13.1.1使用预定义的插入符 378
13.1.2使用成员函数put()输出一个字符 380
13.1.3使用成员函数write()输出一个字符串 381
13.2键盘输入操作 382
13.2.1使用预定义的提取符 382
13.2.2使用成员函数get()获取一个字符 384
13.2.3使用成员函数getline()获取一行字符 384
13.2.4使用成员函数read()读取若干字符 386
13.3格式化输入和输出 387
13.3.1使用流对象的成员函数进行格式输出 387
13.3.2使用控制符进行格式输出 390
13.4插入符和提取符的重载 392
13.5磁盘文件的输入和输出 394
13.5.1文件的打开和关闭操作 394
13.5.2文本文件的读写操作 395
13.5.3二进制文件的读写操作 399
13.5.4随机访问数据文件 402
13.5.5文件操作的其他函数 405
13.6字符串流 408
13.6.1 ostrstream类的构造函数 408
13.6.2 istrstream类的构造函数 409
13.7流错误的处理 411
13.7.1状态字和状态函数 411
13.7.2清除/设置流状态位 411
练习题 412