《C++程式设计(第2版)》是2011年出版的图书,作者是谭浩强。
基本介绍
- 书名:C++程式设计(第2版)
- 作者:谭浩强
- ISBN:9787302254881
- 页数:485
- 出版社:清华大学出版社
- 出版时间:2011-7-26
- 装帧:平装
图书简介:
C++是近年来国内外广泛使用的现代计算机语言,它既支持基于过程的程式设计,也支持面向对象的程式设计。国内许多高校陆续开设了C++程式设计课程。但是,由于C++涉及概念很多,语法比较複杂,内容十分广泛,使不少人感到学习难度较大,难以入门。
本书作者深入调查了大学的程式设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了读者在学习中的困难和认识规律,设计了读者易于学习的教材体系,于2004年出版了《C++程式设计》一书。该书降低入门起点,不需要C语言的基础,从零起点介绍程式设计和C++。广大师生用后反映非常好,认为该书定位準确,概念清晰,深入浅出,取捨合理,以通俗易懂的语言对C++的许多难懂的概念作了透彻而通俗的说明,大大降低了初学者学习的困难,是一本初学者学习C++的好教材。
根据教学实践的需要,作者对该书进行了修订,出版了《C++程式设计(第2版)》,与第1版相比,内容更加丰富,讲解更加清晰,学习更加容易,依据ANSI C++标準进行介绍,引导读者从一开始就按C++的要求编程,而不是过多地迁就C语言的习惯。全书分为4篇: 基本知识;基于过程的程式设计;基于对象的程式设计;面向对象的程式设计。
为了便于教学,本书有两本配套教材: 《C++程式设计题解和上机指导(第2版)》, 《C++程式设计实践指导》,帮助学生通过实践掌握C++的编程方法。
本书内容全面,例题丰富,概念清晰,循序渐进,易于学习,即使没有教师讲授,读者也能看懂本书的大部分内容。本书是学习C++的入门教材,可供各类专业学生使用,也可作为计算机培训班的教材以及读者自学参考。
目录
第1篇 基 本 知 识
第1章C++的初步知识3
??1.1 从C到C++3
??1.2 最简单的C++程式5
1.3 C++程式的构成和书写形式12
1.4 C++程式的编写和实现13
1.5 关于C++上机实践15
习题15
第2章 数据类型和表达式18
2.1 C++的数据类型18
2.2 常量20
2.2.1 什幺是常量20
2.2.2 数值常量20
2.2.3 字元常量22
2.2.4 符号常量25
2.3 变数26
2.3.1 什幺是变数26
2.3.2 变数名规则26
2.3.3 定义变数27
2.3.4 对变数赋初值28
2.3.5 常变数29
2.4 C++的运算符30
2.5 算术运算符与算术表达式30
2.5.1 基本的算术运算符30
2.5.2 算术表达式和运算符的优先权与结合性31
2.5.3 表达式中各类数值型数据间的混合运算312.5.4 自增(++)和自减(--)运算符32
2.5.5 强制类型转换运算符33
2.6 赋值运算符和赋值表达式35
2.6.1 赋值运算符35
2.6.2 赋值过程中的类型转换35
2.6.3 複合赋值运算符36
2.6.4 赋值表达式37
2.7 逗号运算符和逗号表达式38
习题39
第2篇 基于过程的程式设计
第3章 程式设计初步45
3.1 基于过程的程式设计和算法45
3.1.1 算法的概念45
3.1.2 算法的表示46
3.2 C++的程式结构和C++语句47
3.3 赋值操作50
3.4 C++的输入与输出50
??3.4.1 输入流与输出流的基本操作51
??3.4.2 在标準输入流与输出流中使用控制符53
3.4.3 用getchar和putchar 函式进行字元的输入和输出56
3.4.4 用scanf和printf函式进行输入和输出57
3.5 编写顺序结构的程式58
3.6 关係运算和逻辑运算59
3.6.1 关係运算和关係表达式60
??3.6.2 逻辑常量和逻辑变数61
3.6.3 逻辑运算和逻辑表达式62
3.7 选择结构和if语句64
3.7.1if语句的形式64
3.7.2if语句的嵌套67
3.7.3 条件运算符和条件表达式68
3.7.4 多分支选择结构与switch 语句69
3.7.5 编写选择结构的程式71
3.8 循环结构和循环语句74
3.8.1 用while语句构成循环74
3.8.2 用do-while语句构成循环75
3.8.3 用for语句构成循环76
3.8.4 几种循环的比较79
3.8.5 循环的嵌套79
3.8.6 提前结束循环(break语句和continue语句)80
3.8.7 编写循环结构的程式81
习题85
第4章 利用函式实现指定的功能88
4.1 为什幺需要函式88
4.2 定义函式的一般形式90
4.2.1 定义无参函式的一般形式90
4.2.2 定义有参函式的一般形式91
4.3 函式参数和函式的值91
4.3.1 形式参数和实际参数91
4.3.2 函式的返回值93
4.4 函式的调用94
4.4.1 函式调用的一般形式94
4.4.2 函式调用的方式94
4.4.3 对被调用函式的声明和函式原型94
4.5 函式的嵌套调用97
4.6 函式的递归调用99
??4.7 内置函式103
??4.8 函式的重载104
??4.9 函式模板107
??4.10 有默认参数的函式109
4.11 局部变数和全局变数111
4.11.1 局部变数111
4.11.2 全局变数112
4.12 变数的存储类别113
4.12.1 动态存储方式与静态存储方式113
4.12.2 自动变数114
4.12.3 用static声明静态局部变数115
4.12.4 用register声明暂存器变数117
4.12.5 用extern声明外部变数118
4.12.6 用static声明静态外部变数119
4.13 变数属性小结120
4.14 关于变数的声明和定义122
4.15 内部函式和外部函式123
4.15.1 内部函式123
4.15.2 外部函式123
4.16 头档案125
4.16.1 头档案的内容125
??4.16.2 关于C++标準库和头档案的形式126
习题126
第5章 利用数组处理批量数据128
5.1 为什幺需要用数组128
5.2 定义和引用一维数组129
5.2.1 定义一维数组129
5.2.2 引用一维数组的元素129
5.2.3 一维数组的初始化130
5.2.4 一维数组程式举例130
5.3 定义和引用二维数组132
5.3.1 定义二维数组133
5.3.2 引用二维数组的元素134
5.3.3 二维数组的初始化134
5.3.4 二维数组程式举例136
5.4 用数组作函式参数137
5.5 字元数组141
5.5.1 定义和初始化字元数组141
5.5.2 字元数组的赋值与引用142
5.5.3 字元串和字元串结束标誌143
5.5.4 字元数组的输入输出144
5.5.5 使用字元串处理函式对字元串进行操作146
5.5.6 字元数组套用举例148
??5.6 C++处理字元串的方法--字元串类与字元串变数149
5.6.1 字元串变数的定义和引用150
5.6.2 字元串变数的运算151
5.6.3 字元串数组151
5.6.4 字元串运算举例152
习题155
第6章 善于使用指针与引用157
6.1 什幺是指针157
6.2 变数与指针159
6.2.1 定义指针变数159
6.2.2 引用指针变数161
6.2.3 用指针作函式参数163
6.3 数组与指针168
6.3.1 指向数组元素的指针168
6.3.2 用指针变数作函式形参接收数组地址170
6.4 字元串与指针173
6.5 函式与指针175
6.5.1 用函式指针调用函式175
6.5.2 用指向函式的指针作函式参数176
6.6 返回指针值的函式177
6.7 指针数组和指向指针的指针177
6.7.1 指针数组177
6.7.2 指向指针的指针179
??6.8 const指针181
6.9 void指针类型183
6.10 有关指针的数据类型和指针运算的小结184
6.10.1 有关指针的数据类型的小结184
6.10.2 指针运算小结185
??6.11 引用186
6.11.1 什幺是变数的引用186
6.11.2 引用的简单使用188
6.11.3 引用作为函式参数188
习题192
第7章 用户自定义数据类型194
7.1 结构体类型194
7.1.1 为什幺需要用结构体类型194
7.1.2 结构体类型变数的定义方法及其初始化195
7.1.3 引用结构体变数198
7.1.4 结构体数组200
7.1.5 指向结构体变数的指针204
7.1.6 结构体类型数据作为函式参数207
??7.1.7 用new和delete运算符进行动态分配和撤销存储空间210
7.2 共用体类型212
7.3 枚举类型212
7.4 用typedef声明新的类型名216
习题218
第3篇 基于对象的程式设计
第8章 类和对象的特性223
8.1 面向对象程式设计方法概述223
8.1.1 什幺是面向对象的程式设计223
8.1.2 面向对象程式设计的特点227
8.1.3 类和对象的作用228
8.1.4 面向对象的软体开发229
8.2 类的声明和对象的定义230
8.2.1 类和对象的关係230
8.2.2 声明类类型230
8.2.3 定义对象的方法233
8.2.4 类和结构体类型的异同234
8.3 类的成员函式236
8.3.1 成员函式的性质236
8.3.2 在类外定义成员函式236
8.3.3 内置成员函式237
8.3.4 成员函式的存储方式239
8.4 对象成员的引用241
8.4.1 通过对象名和成员运算符访问对象中的成员241
8.4.2 通过指向对象的指针访问对象中的成员241
8.4.3 通过对象的引用来访问对象中的成员242
8.5 类的封装性和信息隐蔽242
8.5.1 公用接口与私有实现的分离242
8.5.2 类声明和成员函式定义的分离244
8.5.3 面向对象程式设计中的几个名词245
8.6 类和对象的简单套用举例245
习题252
第9章 怎样使用类和对象255
9.1 利用构造函式对类对象进行初始化255
9.1.1 对象的初始化255
9.1.2 用构造函式实现数据成员的初始化256
9.1.3 带参数的构造函式258
9.1.4 用参数初始化表对数据成员初始化260
9.1.5 构造函式的重载261
9.1.6 使用默认参数的构造函式263
9.2 析构函式265
9.3 调用构造函式和析构函式的顺序267
9.4 对象数组269
9.5 对象指针271
9.5.1 指向对象的指针271
9.5.2 指向对象成员的指针272
9.5.3this指针275
9.6 共用数据的保护276
9.6.1 常对象277
9.6.2 常对象成员278
9.6.3 指向对象的常指针279
9.6.4 指向常对象的指针变数280
9.6.5 对象的常引用283
9.6.6const型数据的小结284
9.7 对象的动态建立和释放284
9.8 对象的赋值和複製286
9.8.1 对象的赋值286
9.8.2 对象的複製287
9.9 静态成员290
9.9.1 静态数据成员290
9.9.2 静态成员函式292
9.10 友元296
9.10.1 友元函式296
9.10.2 友元类300
9.11 类模板300
习题305
第10章 运算符重载308
10.1 什幺是运算符重载308
10.2 运算符重载的方法310
10.3 重载运算符的规则313
10.4 运算符重载函式作为类成员函式和友元函式314
10.5 重载双目运算符318
10.6 重载单目运算符322
10.7 重载流插入运算符“<<”和流提取运算符“>>" 325
10.7.1 重载流插入运算符“<<" 325
10.7.2 重载流提取运算符“>>" 328
10.8 有关运算符重载的归纳329
10.9 不同类型数据间的转换331
10.9.1 标準类型数据间的转换331
10.9.2 用转换构造函式进行不同类型数据的转换331
10.9.3 类型转换函式333
习题338
第4篇 面向对象的程式设计
第11章 继承与派生343
11.1 继承与派生的概念343
11.2 派生类的声明方式346
11.3 派生类的构成346
11.4 派生类成员的访问属性348
11.4.1 公用继承349
11.4.2 私有继承351
11.4.3 保护成员和保护继承354
11.4.4 多级派生时的访问属性358
11.5 派生类的构造函式和析构函式359
11.5.1 简单的派生类的构造函式359
11.5.2 有子对象的派生类的构造函式363
11.5.3 多层派生时的构造函式366
11.5.4 派生类构造函式的特殊形式368
11.5.5 派生类的析构函式369
11.6 多重继承369
11.6.1 声明多重继承的方法369
11.6.2 多重继承派生类的构造函式370
11.6.3 多重继承引起的二义性问题372
11.6.4 虚基类376
11.7 基类与派生类的转换380
11.8 继承与组合384
11.9 继承在软体开发中的重要意义385
习题387
第12章 多态性与虚函式392
12.1 多态性的概念392
12.2 一个典型的例子393
12.3 利用虚函式实现动态多态性398
12.3.1 虚函式的作用398
12.3.2 静态关联与动态关联402
12.3.3 在什幺情况下应当声明虚函式403
12.3.4 虚析构函式404
12.4 纯虚函式与抽象类405
12.4.1 纯虚函式405
12.4.2 抽象类406
12.4.3 套用实例407
习题413
第13章 输入输出流415
13.1 C++的输入和输出415
13.1.1 输入输出的含义415
13.1.2C++的I/O对C的发展--类型安全和可扩展性415
13.1.3C++的输入输出流416
13.2 标準输出流421
13.2.1cout,cerr和clog流421
13.2.2 标準类型数据的格式输出423
13.2.3 用流成员函式put输出字元426
13.3 标準输入流427
13.3.1cin流427
13.3.2 用于字元输入的流成员函式428
13.3.3istream类的其他成员函式429
13.4 对数据档案的操作与档案流433
13.4.1 档案的概念433
13.4.2 档案流类与档案流对象434
13.4.3 档案的打开与关闭435
13.4.4 对ASCII档案的操作437
13.4.5 对二进制档案的操作442
13.5 字元串流447
习题452
第14章C++工具453
14.1 异常处理453
14.1.1 异常处理的任务453
14.1.2 异常处理的方法454
14.1.3 在函式声明中进行异常情况指定461
14.1.4 在异常处理中处理析构函式461
14.2 命名空间464
14.2.1 为什幺需要命名空间464
14.2.2 什幺是命名空间467
14.2.3 使用命名空间解决名字冲突469
14.2.4 使用命名空间成员的方法471
14.2.5 无名的命名空间473
14.2.6 标準命名空间std473
14.3 使用早期的函式馆474
习题475
参考文献480