C++程序设计(第2版)
作者:姜学锋,刘君瑞,周果清
出版社:清华大学出版社
出版时间:2022-10-01
ISBN:9787302617433
定价:¥79.90
目录
第1部分基础篇
第1章程序设计基础31.1计算机系统和工作原理3
1.1.1计算机系统的组成3
1.1.2指令与程序5
1.2信息的表示与存储7
1.2.1计算机的数字系统7
1.2.2进位计数制的转换8
1.2.3数值数据的表示11
1.2.4非数值数据的表示15
1.3程序设计语言16
1.3.1机器语言与汇编语言16
1.3.2高级语言17
1.4程序设计概述18
1.4.1计算机问题求解的基本特点18
1.4.2算法的定义与特性18
1.4.3算法的表示19
1.4.4结构化程序设计21
1.4.5面向对象程序设计22
1.5C++概述23
1.5.1C++与C语言23
1.5.2C++基本词法23
1.5.3简单的C++程序25
1.5.4C++程序基本结构29
习题30
第2部分语言篇
第2章数据及计算332.1数据类型33
2.1.1整型34
2.1.2浮点型35
2.1.3字符型36
2.1.4逻辑型37
2.2常量38
2.2.1整型常量38
2.2.2浮点型常量39
2.2.3字符常量39
2.2.4字符串常量41
2.2.5符号常量42
2.3变量43
2.3.1变量的概念43
2.3.2定义变量43
2.3.3使用变量44
2.3.4存储类别45
2.3.5类型限定45
2.4运算符与表达式47
2.4.1运算符与表达式的概念47
2.4.2算术运算符49
2.4.3自增自减运算符50
2.4.4关系运算符51
2.4.5逻辑运算符53
2.4.6条件运算符54
2.4.7位运算符55
2.4.8赋值运算符59
2.4.9取长度运算符61
2.4.10逗号运算符62
2.4.11圆括号运算符62
2.4.12常量表达式63
2.5类型转换63
2.5.1隐式类型转换63
2.5.2显式类型转换66
习题67
第3章流程控制69
3.1语句69
3.1.1简单语句69
3.1.2复合语句70
3.1.3注释71
3.1.4语句的写法73
3.2输入与输出74
3.2.1输入流与输出流75
3.2.2字符输入与输出82
3.2.3格式化输出83
3.2.4格式化输入87
3.3程序顺序结构89
3.3.1顺序执行89
3.3.2跳转执行90
3.4程序选择结构91
3.4.1if语句91
3.4.2switch语句94
3.4.3选择结构的嵌套97
3.4.4选择结构程序举例101
3.5程序循环结构103
3.5.1while语句103
3.5.2do语句105
3.5.3for语句106
3.5.4break语句108
3.5.5continue语句109
3.5.6循环结构的嵌套110
3.5.7循环结构程序举例110
习题114
第4章程序模块化——函数117
4.1函数定义117
4.1.1函数定义的一般形式117
4.1.2函数返回120
4.2函数参数121
4.2.1形式参数121
4.2.2实际参数122
4.2.3参数传递机制122
4.2.4函数调用栈123
4.2.5const参数125
4.2.6可变参数函数125
4.3函数原型与调用127
4.3.1函数声明和函数原型127
4.3.2库函数的调用方法130
4.3.3常用库函数131
4.4内联函数135
4.5默认参数136
4.5.1带默认参数的函数136
4.5.2默认参数函数的调用138
4.6函数重载139
4.6.1函数重载定义139
4.6.2重载函数的调用142
4.7函数模板144
4.7.1函数模板的概念144
4.7.2函数模板的定义和使用145
4.8函数调用形式149
4.8.1嵌套调用149
4.8.2递归调用151
4.9作用域和生命期153
4.9.1局部变量153
4.9.2全局变量154
4.9.3作用域155
4.9.4程序映像和内存布局158
4.9.5生命期161
4.10对象初始化164
4.11声明与定义166
4.12变量修饰小结168
4.13程序组织结构169
4.13.1内部函数169
4.13.2外部函数170
4.13.3多文件结构170
4.13.4头文件与工程文件171
4.13.5提高编译速度173
4.14函数应用程序举例174
习题177
第5章任务自动化——预处理179
5.1宏定义179
5.1.1不带参数的宏定义180
5.1.2带参数的宏定义182
5.1.3#和##预处理运算186
5.1.4预定义宏186
5.2文件包含187
5.3条件编译189
5.3.1#define定义条件189
5.3.2#ifdef、#ifndef189
5.3.3#if#elif190
习题191
第6章批量数据——数组193
6.1一维数组的定义和引用193
6.1.1一维数组的定义193
6.1.2一维数组的初始化195
6.1.3一维数组的引用195
6.2多维数组的定义和引用197
6.2.1多维数组的定义197
6.2.2多维数组的初始化199
6.2.3多维数组的引用200
6.3数组与函数203
6.3.1数组作为函数的参数203
6.3.2数组参数的传递机制204
6.4字符串207
6.4.1字符数组207
6.4.2字符串209
6.4.3字符串的输入和输出211
6.4.4字符串数组213
6.4.5字符串处理函数214
6.5C++字符串类219
6.5.1字符串对象的定义和引用219
6.5.2字符串对象的操作220
6.5.3字符串对象数组223
6.6数组应用程序举例224
习题233
第7章引用数据236
7.1指针与指针变量236
7.1.1地址和指针的概念236
7.1.2指针变量237
7.2指针的使用及运算239
7.2.1获取对象的地址239
7.2.2指针的间接访问240
7.2.3指针变量的初始化与赋值242
7.2.4指针的有效性244
7.2.5指针运算245
7.2.6指针的const限定250
7.3指针与数组252
7.3.1指向一维数组元素的指针253
7.3.2指向多维数组元素的指针257
7.3.3数组指针260
7.3.4指针数组262
7.3.5指向指针的指针264
7.4指针与字符串267
7.4.1指向字符串的指针267
7.4.2指针与字符数组的比较269
7.4.3指向字符串数组的指针270
7.5指针与函数272
7.5.1指针作为函数参数272
7.5.2函数返回指针值281
7.5.3函数指针282
7.6动态内存286
7.6.1动态内存的概念286
7.6.2动态内存的分配和释放287
7.6.3动态内存的应用290
7.7带参数的main函数294
7.8引用类型295
7.8.1引用的概念与定义295
7.8.2引用的使用296
7.8.3常引用299
7.8.4对象、指针与引用的比较300
习题301
第8章组合数据——自定义类型303
8.1结构体类型303
8.2结构体对象305
8.2.1结构体对象的定义305
8.2.2结构体对象的初始化308
8.2.3结构体对象的使用308
8.3结构体与数组309
8.3.1结构体数组309
8.3.2结构体数组成员310
8.4结构体与指针311
8.4.1指向结构体的指针311
8.4.2指向结构体数组的指针313
8.4.3结构体指针成员314
8.5结构体与函数315
8.5.1结构体对象作为函数参数315
8.5.2结构体数组作为函数参数315
8.5.3结构体指针或引用作为函数参数316
8.5.4函数返回结构体对象、指针或引用316
8.6共用体317
8.6.1共用体概念及类型定义317
8.6.2共用体对象的定义318
8.6.3共用体对象的使用319
8.6.4结构体与共用体嵌套320
8.7枚举类型320
8.7.1枚举类型的声明320
8.7.2枚举类型对象321
8.8位域321
8.8.1位域的声明321
8.8.2位域的使用323
8.9用户自定义类型324
习题326
第3部分方法篇
第9章类与对象3319.1类的定义和声明331
9.1.1类的定义331
9.1.2成员访问控制334
9.1.3类的数据成员335
9.1.4类的成员函数336
9.1.5类声明与类定义340
9.1.6类之间的关系341
9.1.7类和结构体的区别343
9.2对象的定义和使用343
9.2.1对象的定义343
9.2.2对象的动态建立和释放345
9.2.3对象成员的引用346
9.3构造函数和析构函数351
9.3.1构造函数351
9.3.2构造函数的重载357
9.3.3带默认参数的构造函数358
9.3.4默认构造函数360
9.3.5隐式类类型转换361
9.3.6复制构造函数362
9.3.7构造函数小结367
9.3.8析构函数368
9.3.9构造函数和析构函数的调用次序370
9.4对象数组371
9.5对象指针372
9.5.1指向对象的指针372
9.5.2类成员指针372
9.5.3this指针374
9.6类作用域与对象生命期375
9.6.1类作用域375
9.6.2对象生命期380
9.7const限定383
9.7.1常对象383
9.7.2常数据成员384
9.7.3常成员函数385
9.7.4指向对象的常指针386
9.7.5指向常对象的指针变量387
9.7.6对象的常引用387
9.8静态成员388
9.8.1静态数据成员388
9.8.2静态成员函数390
9.9友元392
9.9.1友元函数392
9.9.2友元类394
9.10类模板394
9.10.1类模板的定义394
9.10.2泛型编程397
9.11数据封装和信息隐蔽398
习题400
第10章继承与派生402
10.1类的继承与派生402
10.1.1基类与派生类402
10.1.2派生类的定义404
10.1.3派生类的构成405
10.2派生类成员的访问406
10.2.1类的保护成员406
10.2.2派生类成员的访问权限407
10.3赋值兼容规则409
10.4派生类的构造和析构函数410
10.4.1派生类的构造函数410
10.4.2派生类的析构函数412
10.5多重继承412
10.5.1多重继承派生类412
10.5.2二义性问题及名字支配规则413
10.5.3虚基类415
10.6多态性与虚函数416
10.6.1多态性的概念416
10.6.2虚函数420
10.6.3虚析构函数425
10.6.4纯虚函数425
10.6.5抽象类426
10.7命名的强制类型转换427
习题432
第11章运算符重载433
11.1运算符重载的概念433
11.2运算符重载的方法433
11.2.1运算符函数433
11.2.2重载运算符的规则436
11.2.3运算符重载为类成员函数438
11.2.4运算符重载为友元函数440
11.3典型运算符的重载441
11.3.1重载双目运算符441
11.3.2重载单目运算符443
11.3.3重载复合赋值运算符444
11.3.4重载流运算符444
11.3.5重载类型转换运算符446
习题447
第4部分工具篇
第12章异常处理45112.1基本概念451
12.1.1为什么要异常处理451
12.1.2程序健壮性452
12.1.3异常处理的方法452
12.2异常处理的实现453
12.2.1抛出异常453
12.2.2检测捕获异常454
12.2.3函数声明中的异常接口说明458
12.2.4异常处理中的构造与析构458
习题459
第13章命名空间460
13.1命名空间的概念460
13.2命名空间的定义与未命名的命名空间462
13.2.1命名空间的定义462
13.2.2未命名的命名空间466
13.3命名空间的使用467
13.3.1命名空间成员的使用467
13.3.2类和命名空间469
13.3.3标准命名空间的使用471
习题472
第14章标准库473
14.1C++标准库473
14.2标准输入输出474
14.2.1C++流的概念474
14.2.2文件流476
14.2.3字符串流483
14.3标准模板库485
14.3.1迭代器485
14.3.2向量486
14.3.3列表487
14.3.4队列489
14.3.5栈489
习题490
附录AASCII码对照表492
附录BC++关键字493
附录CC++运算符及其优先级、结合性495
参考文献498