第1章 C+语言的入门和调试环境 1
1.1 C++的字符集 1
1.2变量(或称标识符) 1
1.3注释符 1
1.4从一个小程序开始 2
1.5变量的类型及取值范围 2
1.5.1整型变量的取值范围 3
1.5.2如何求出无符号数的取值范围 4
1.5.3有符号数的表示方法 5
1.5.4补码的概念 5
1.5.5数据的二进制存储 7
1.5.6程序举例 8
1.6实型变量的类型 9
1.7 C++程序的编辑、编译、连接和运行 10
1.8工程文件的使用方法 15
练习题 21
第2章 几种常用的量 26
2.1常量的两种定义方法 26
2.2八进制和十六进制整数的表示方法 26
2.3字符常量和转义符\的使用 27
2.4字符串常量 28
2.5字符串与字符的区别 29
2.6逻辑变量 30
2.7枚举变量 30
练习题 31
第3章 基本语句 32
3.1赋值语句 32
3.2输入cin﹥﹥和输出cout﹤﹤语句 32
3.2.1从键盘输入cin﹥﹥ 32
3.2.2重定向输入或称创建输入流 33
3.2.3从屏幕输出cout﹤﹤ 35
3.3 if……else语句 35
3.4 if……else语句的另一种表示方式 37
3.5用if……else计算多分支问题 38
3.6 else if语句 39
3.7条件语句中两个等于号与一个等于号的区别 41
3.8表达式运算符 41
3.9位运算符 43
3.10表达式的书写格式 47
3.11 for循环语句 49
3.12 for循环语句的注意事项 51
3.13二重循环 51
3.14 continue语句 53
3.15 break语句 53
3.16 while循环语句 54
3.17 do……while循环语句 54
3.18 switch开关语句 55
3.19 goto语句 58
3.20程序举例 58
练习题 65
第4章 数组 66
4.1一维数组的定义 66
4.2一维数组的赋值 66
4.3二维数组的定义 68
4.4二维数组的赋值 69
4.5三维数组的定义 71
4.6字符数组 72
4.7传统字符串处理函数和用类string处理字符串 74
4.7.1用老方法处理字符串 74
4.7.2用字符串类string处理字符串 77
4.7.3如何将传统字符串转为string串 80
4.7.4 c_str()函数 80
4.7.5 substr()函数 81
4.7.6 atoi()函数 81
4.7.7 atoi()、substr()和c_str()综合应用 82
4.8数组赋值综合举例 82
4.9向量 88
4.9.1一维向量的语法格式 88
4.9.2一维向量与一维数组比对 90
4.9.3向量管理函数 92
4.9.4用指针访问一维向量 106
4.9.5二维向量 107
4.9.6二维向量的初始化 109
练习题 110
第5章 指针和引用 112
5.1指针 112
5.2用指针处理一维数组 116
5.3一维指针数组 117
5.4指针的指针(二级指针) 118
5.5指向字符串的指针 120
5.6用指针处理二维数组 121
5.7二维指针数组 122
5.8一维字符型指针数组与二维字符型数组的比对 123
5.9 n列数组指针 125
5.10用指针处理三维数组 126
5.11函数指针 129
5.11.1函数指针 129
5.11.2函数指针数组 130
5.11.3函数指针向量 132
5.12引用 133
5.13指针函数与引用函数的反汇编 137
练习题 140
第6章 函数 141
6.1函数的定义和调用方法 141
6.2函数的参数传递 143
6.3函数的入口参数 149
6.3.1设置函数入口参数的默认值 149
6.3.2函数的入口参数为数组或指针变量 151
6.4函数的递归调用 151
6.5内联函数 154
6.6函数重载 155
6.7变量的作用域 156
6.8全局变量、外部变量、静态变量和局部变量 157
6.8.1全局变量和外部变量程序例 160
6.8.2局部变量程序例 162
6.8.3静态变量程序例 164
6.9内部函数和外部函数 166
6.9.1内部函数 166
6.9.2外部函数 167
6.10结构体 168
6.10.1结构体的定义 168
6.10.2结构体变量的定义 169
6.10.3结构体的嵌套定义 170
6.10.4结构体变量的引用 171
6.10.5结构体变量的初始化 171
6.10.6结构体数组变量 172
6.10.7结构体数组初始化 173
6.10.8结构体指针变量 173
6.10.9结构体中可以定义成员函数 175
6.11共用体 176
6.11.1引入共用体的目的 176
6.11.2结构体与共用体可以互相嵌套 178
6.12结构体与共用体程序例 179
6.13链表 182
6.13.1链表概述 182
6.13.2对链表的基本操作 183
6.13.3链表节点结构体的定义 183
6.13.4链表的创建与输出 183
6.13.5删除链表中节点 185
6.13.6在链表中插入节点 187
6.13.7链表的综合应用 189
6.14有参主函数main(int argc,char*argv[]) 192
练习题 194
第7章 输入/输出流库 195
7.1 cin和cout程序例 195
7.2字符输出 197
7.2.1用cout.put()输出字符 198
7.2.2用putchar()函数输出字符 199
7.3用cout.write()输出字符串 199
7.4键盘输入cin.get() 200
7.5用cin.getline从键盘输入多个字符 203
7.6 cin.eof()成员函数 204
7.7用cin.read()从键盘输入指定个数字符 205
7.8格式化输入和输出函数 205
7.8.1 setf()函数 205
7.8.2 width(),right和fill()函数 206
7.8.3 precision()和scientific()函数 207
7.8.4 showpos()和internal()函数 207
7.8.5 showpoint()和fixed()函数 208
7.8.6 setfill()和setw()函数 208
练习题 209
第8章 类和对象 211
8.1从结构体到类 214
8.2对象的定义格式 216
8.3对象的初始化 219
8.3.1构造函数和析构函数 219
8.3.2默认构造函数 220
8.3.3拷贝初始化构造函数 221
8.4成员函数的特性 223
8.4.1内联函数和外联函数 223
8.4.2重载函数 224
8.4.3设置函数参数的缺省值 225
8.5静态成员 226
8.5.1静态数据成员 226
8.5.2静态成员函数 227
8.6友元 228
8.6.1友元函数 229
8.6.2友元类 232
练习题 233
第9章 指针和引用在类和对象中的使用方法 241
9.1对象指针和对象引用 241
9.1.1指向类的成员的指针 242
9.1.2用对象指针和对象引用作为函数参数 243
9.2数组 247
9.2.1对象数组的定义 247
9.2.2指向数组的指针和指针数组 248
9.3常类型 253
9.3.1一般常量的定义 253
9.3.2常对象的定义 253
9.3.3常指针的定义 254
9.3.4常成员函数 254
9.3.5常数据成员 255
9.4对象成员 256
9.4.1对象成员的初始化(数据成员初始化列表) 256
9.4.2动态分配内存函数new和释放内存函数delete 257
9.5程序例 261
练习题 266
第10章 继承性和派生类 273
10.1继承、基类(父类)和派生类(子类)的定义 273
10.1.1派生类的定义格式 273
10.1.2派生类的三种继承方式 273
10.1.3访问权限 274
10.2单继承 274
10.2.1成员访问权限的控制 274
10.2.2构造函数和析构函数 277
10.2.3析构函数 279
10.3多继承 280
10.3.1多继承的构造函数 280
10.3.2基类成员访问的二义性问题 282
10.4虚基类 283
练习题 285
第11章 文件 291
11.1文件概述 291
11.2用fstream的成员函数open()打开文件 292
11.3用ofstream的成员函数open()打开文件写 293
11.4用ifstream的成员函数open()打开文件读 293
11.5用成员函数close()关闭文件 293
11.6用成员函数eof()判文件尾 293
11.7用函数exit(0)、abort(0)和return0退出程序 293
11.8用定义的对象将不同类型的数据写入文件 293
11.9单个字符处理成员函数put(ch)/get(ch) 295
11.10字符串处理成员函数getline() 296
11.11用成员函数read()和write()读/写二进制文件 297
11.12文件的随机访问 304
11.13随机访问程序例 304
11.14向量程序例(二维矩阵应用) 308
11.14.1矩阵加法 308
11.14.2矩阵转置 309
11.14.3矩阵乘法 310
11.15运算符重载 311
练习题 313
第12章 模板 315
12.1函数模板 315
12.2函数模板的定义和应用 318
12.3函数模板程序例 320
12.4类模板 323
练习题 326
第13章 异常 327
13.1异常处理的语法格式 327
13.2被截获变量的对号入座 328
13.3如何修改捕捉不住异常的默认处理 329
13.4 throw可以写在其他函数中 330
13.5将出错信息传递给遥远的捕捉器 331
13.6自定义抛掷的类 332
13.7异常语句的非错误处理 333
练习题 334