第一章 概述 1
1.1面向对象基础 1
面向对象方法的形成 1
面向对象的基本概念 3
1.2 C++概述 6
C++的起源及特点 6
C++对面向对象的支持 7
1.3程序举例 8
1.4 C++的词法记号 10
字符集 10
词法记号 10
空白 12
1.5 C++程序的编辑和运行 13
编辑 13
编译 13
连接 13
运行 14
练习题 14
第二章 数据类型、运算符和表达式 16
2.1数据类型 16
基本数据类型 16
类型修饰符 17
2.2常量与变量 17
常量 18
变量 20
2.3运算符 22
算术运算符 22
关系运算符与逻辑运算符 24
位运算 25
赋值运算符 26
其他运算符 26
2.4运算符的优先级与结合性 27
2.5混合运算与类型转换 28
自动类型转换 28
强制类型转换 30
练习题 30
第三章 C++中的控制语句 32
3.1程序语句和3种基本结构 32
语句 32
程序的3种基本结构 32
3.2 if语句 33
单分支if语句 34
双分支if-else语句 36
else-if语句 37
if嵌套中的问题 38
3.3 switch多路开关语句 39
3.4循环控制语句 41
while语句 41
do-while语句 42
for语句 44
循环嵌套 46
3.5转向语句 46
break语句 47
continue语句 47
goto语句 48
3.6程序举例 49
练习题 51
第四章 数组类型与枚举类型 56
4.1数组类型 56
一维数组 56
二维数组 58
字符数组 61
4.2枚举类型 63
说明枚举模式 64
定义枚举变量 64
练习题 65
第五章 指针与引用 68
5.1指针的概念 68
指针的定义 69
指针赋值与使用 70
指针初始化 71
指针运算 71
指向指针的指针 72
5.2指针与数组 73
指针与一维数组 73
指针与二维数组 75
5.3指针与字符串 77
5.4指针数组 78
5.5动态内存分配 79
动态内存分配的概念 79
用new和delete进行动态内存分配 80
指针使用中的两个问题 81
5.6引用 82
练习题 84
第六章 函数 86
6.1函数定义与调用 86
函数的概念 86
函数定义 88
函数调用 89
函数原型声明 90
6.2函数调用中的参数传递 91
传值调用 91
传址调用 92
传引用调用 94
使用缺省形参 94
函数参数的求值顺序 95
6.3数组作为函数的参数 96
6.4指针与函数 98
返回指针的函数 98
指向函数的指针 99
6.5函数嵌套调用与递归调用 100
函数的嵌套调用 100
函数的递归调用 102
6.6内联函数inline 104
6.7函数重载 105
6.8 C++中的系统函数 107
常用数学函数 107
常用字符串函数 109
其他常用系统函数 112
6.9存储类型 114
自动变量 115
外部变量 117
静态变量 119
寄存器变量 120
外部函数与内部函数 120
其他几个需要说明的问题 121
练习题 123
第七章 C++中的预处理命令 126
7.1宏替换命令 126
7.2文件包含命令 129
7.3条件编译命令 130
练习题 132
第八章 类和对象(一) 134
8.1类的定义 134
类的说明部分 134
成员函数的定义 135
8.2定义对象——类的实例化 137
对象的定义 137
访问对象的成员 137
8.3类的公有成员与私有成员——数据封装 138
8.4接口与实现分离 141
8.5构造函数和析构函数 144
构造函数 144
缺省构造函数 146
析构函数 146
拷贝构造函数 147
应用举例——串类String 149
8.6用对象作为类的成员——子对象 151
8.7类作用域 153
练习题 154
第九章 类和对象(二) 161
9.1成员函数的内联实现 161
9.2静态成员 162
静态数据成员 162
静态成员函数 164
9.3友元 165
友元函数 166
友元类 167
9.4对象数组 169
9.5指向对象的指针和对象引用 170
指向对象的指针 170
对象指针和对象引用作为函数的参数 171
this指针 173
动态对象 174
9.6 const关键字 175
const常量 175
const指针 176
用const修饰函数的形参 177
const对象与const成员函数 177
练习题 179
第十章 继承与派生 180
10.1继承的概念 180
10.2单继承 181
定义单继承 181
保护成员 183
继承方式 186
在派生类中重新定义基类成员 187
派生类中的构造函数和析构函数 190
10.3多继承 192
定义多继承 192
多继承中的构造函数和析构函数 193
多继承中的二义性问题 195
10.4虚基类 199
虚基类的概念 199
虚基类中的构造函数 200
练习题 202
第十一章 虚函数与多态性 205
11.1子类型 205
子类型的概念 205
用基类指针指向公有派生类对象 206
11.2虚函数 208
引入虚函数的概念 208
定义虚函数 210
虚函数与函数重载 211
静态联编与动态联编 212
11.3纯虚函数与抽象类 213
纯虚函数 213
抽象类 214
11.4虚析构函数 218
练习题 219
第十二章 运算符重载 223
12.1概述 223
12.2用成员函数方式重载 224
12.3用友元方式重载 226
12.4重载++和 228
12.5重载赋值运算符“=” 230
重载赋值运算符的方法 230
类对象赋值中需要注意的问题 231
12.6重载[]和() 233
重载下标运算符[] 233
重载函数调用运算符() 235
12.7类型转换 235
类型转换构造函数 236
类型转换成员函数 237
12.8运算符重载举例——字符串类 238
练习题 244
第十三章 C++的I/O流库 248
13.1 C++流库的结构 248
streambuf类 248
ios类 249
13.2一般输入/输出操作 250
插入运算符(<<)和提取运算符(>>) 250
重载插入运算符和提取运算符 253
使用成员函数get和put 255
使用成员函数write和read 256
成员函数ignore、 putback和peek 256
13.3格式化输入和输出 257
设置格式状态标志 257
格式输出函数 260
操作子 261
13.4磁盘文件的输入输出操作 263
文件的打开和关闭 263
文件读写操作 265
随机访问数据文件 267
13.5流错误处理 268
练习题 269
附录一 《C++程序设计》教学大纲 272
附录二 上机实验 273
附录三 ASCII码表 276
参考文献 277