《c++程式设计》是清华大学出版社出版的图书,作者是谭浩强。
基本介绍
- 书名:c++程式设计
- 作者:谭浩强
- ISBN:9787302085997, 7302085994
- 页数:485页
- 出版社:清华大学出版社
- 装帧:平装
- 开本:16开
内容简介
《中国高等院校计算机基础教育课程体系规划教材:C++程式设计(第2版)》作者谭浩强深入调查了大学的程式设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了读者在学习中的困难和认识规律,设计了读者易于学习的教材体系,于2004年出版了《C++程式设计》一书。该书降低入门起点,不需要C语言的基础,从零起点介绍程式设计和C++。广大师生用后反映非常好,认为该书定位準确,概念清晰,深入浅出,取捨合理,以通俗易懂的语言对C++的许多难懂的概念作了透彻而通俗的说明,大大降低了初学者学习的困难,是一本初学者学习C++的好教材。 根据教学实践的需要,作者对该书进行了修订,出版了本书,与第1版相比,内容更加丰富,讲解更加清晰,学习更加容易,依据ANSIC++标準进行介绍,引导读者从一开始就按C++的要求编程,而不是过多地迁就C语言的习惯。
本书把入门起点降低,读者不需要具备C语言的基础。本书包括14章,分为4篇:基本知识;面向过程的程式设计;基于对象的程式设计;面向对象的程式设计。本书内容全面,例题丰富,概念清晰,循序渐进,易于学习。
《C++程式设计》是依据ANSI C++标準进行介绍的,引导读者从一开始就按标準C++的规定编程。本书配有两本辅导教材,即《C++程式设计题解与上机指导》和《C++编程实践指导》,全书分为4篇:基本知识;基于过程的程式设计;基于对象的程式设计;面向对象的程式设计。 本书内容全面,例题丰富,概念清晰,循序渐进,易于学习,即使没有教师讲授,读者也能看懂本书的大部分内容。本书是学习C++的入门教材,可供各类专业学生使用,也可作为计算机培训班的教材以及读者自学参考。
《C++程式设计》是依据ANSI C++标準进行介绍的,引导读者从一开始就按标準C++的规定编程。本书配有两本辅导教材,即《C++程式设计题解与上机指导》和《C++编程实践指导》,全书分为4篇:基本知识;基于过程的程式设计;基于对象的程式设计;面向对象的程式设计。 本书内容全面,例题丰富,概念清晰,循序渐进,易于学习,即使没有教师讲授,读者也能看懂本书的大部分内容。本书是学习C++的入门教材,可供各类专业学生使用,也可作为计算机培训班的教材以及读者自学参考。
作者简介
谭浩强,我国着名计算机教育专家。1934年生。1958年清华大学毕业。学生时代曾担任清华大学学生会主席、北京市人民代表。他是我国计算机普及和高校计算机基础教育开拓者之一,现任全国高等院校计算机基础教育研究会会长、教育部全国计算机套用技术证书考试委员会主任委员。
谭浩强教授创造了3个世界记录:(1)20年来他(及和他人合作)共编着出版了130本计算机着作,此外主编了250多本计算机书籍,是出版科技着作数量最多的人。(2)他编着和主编的书发行量超过5000万册,是读者最多的科技作家。我国平均每26人、知识分子每1.2人就拥有1本谭浩强教授编着的书。(3)他和别人合作编着的《BASIC语言》发行了1250万册,创科技书籍发行量的世界纪录。此外,他编着的《C程式设计》发行了900万册。他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,VisualBasic七种计算机语言,观众超过300万人。
在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明複杂的概念。许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业做出了重要的贡献。
谭浩强教授曾获全国高校教学成果国家级奖、国家科技进步奖,以及北京市政府授予的“有突出贡献专家”称号。《计算机世界》报组织的“世纪评选”把他评为我国“20世纪最有影响的IT人物”10个人之一(排在第2位)。他的功绩是把千百万民众带入计算机的大门。
谭浩强教授创造了3个世界记录:(1)20年来他(及和他人合作)共编着出版了130本计算机着作,此外主编了250多本计算机书籍,是出版科技着作数量最多的人。(2)他编着和主编的书发行量超过5000万册,是读者最多的科技作家。我国平均每26人、知识分子每1.2人就拥有1本谭浩强教授编着的书。(3)他和别人合作编着的《BASIC语言》发行了1250万册,创科技书籍发行量的世界纪录。此外,他编着的《C程式设计》发行了900万册。他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,VisualBasic七种计算机语言,观众超过300万人。
在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明複杂的概念。许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业做出了重要的贡献。
谭浩强教授曾获全国高校教学成果国家级奖、国家科技进步奖,以及北京市政府授予的“有突出贡献专家”称号。《计算机世界》报组织的“世纪评选”把他评为我国“20世纪最有影响的IT人物”10个人之一(排在第2位)。他的功绩是把千百万民众带入计算机的大门。
编辑推荐
《C++程式设计》是谭浩强教授的又一力作,依据C++标準进行介绍,引导学生学习标準C++,而不仅学习依赖于某一特定环境下的“方言化”的C++ ,教与学的新突破,学习“C++ 程式设计”从此变得容易。
本书是为已学过C语言程式设计、具有程式设计初步知识的读者编写的,是与作者编着的《C++面向对象程式设计》(清华大学出版社出版)一书配套的辅助教材。本书包括3个部分: 《C++面向对象程式设计》一书各章中的全部习题的参考解答;C++的上机操作,这部分介绍了在两种典型的环境下运行C++程式的方法,即Visual C++6.0和GCC在DOS/Windows平台上的版本DJGPP(以及与之配合使用的集成软体开发环境RHIDE);上机实验内容与安排,这部分提出了上机实验的指导思想和上机实验的内容与安排,供教学参考。
随本书赠送的光碟中包括《C++面向对象程式设计》一书中的全部例题程式,各章习题解答的程式以及DOS/Windows环境下的GCC版本(DJGPP及其配套集成环境RHIDE)。
本书可作为学习《C++面向对象程式设计》的辅助教材,也可供其他初学C++的读者参考。
本书特色
(1)準确定位,合理取捨。
本书使读者对C++的全貌有基本的认识,用容易理解的方法讲清楚有关的基本概念和基本方法。
(2)全新体系,内容翔实。
本书以面向过程的程式设计为切入点,从编写简单的程式开始,循序渐进,由面向过程、基于对象到面向对象,逐步深入,符合读者的认识规律。
(3)例题丰富,通俗易懂。
本书作者花费了很大的精力去考虑怎样使读者易于接受和理解,儘量用通俗易懂的方法和语言叙述複杂的概念,力求减少初学者学习C++的困难。书中所举的程式,是从教学的角度考虑的,非常切合教学之用。
(4)体现C++标準。
本书依据C++标準进行介绍,引导学生学习标準C++,而不仅学习依赖于某一特定环境下的“方言化”的C++。
(5)配套齐全,考虑纵深。
本书的配套资源:
《C++程式设计题解与上机指导》(附光碟,包括教材中全部例题的源程式)
《C++程式编程实践指导》(帮助学生提高编程能力)
向选用本教材的教师免费提供讲课的电子演示文稿。
本书配有两本辅导教材,即《C++程式设计题解上机指导》和《C++编程实践指导》。本书是大学各专业学生学习C++的基础教材,也是适于初学者学习的教材。即使没有教师讲授,读者也能看懂本书的大部分内容。
图书目录
第1篇基本知识
第1章C++的初步知识
1.1从C到C++
1.2最简单的C++程式
1.3C++程式的构成和书写形式
1.4C++程式的编写和实现
1.5关于C++上机实践
习题
第2章数据类型和表达式
2.1C++的数据类型
2.2常量
2.2.1什幺是常量
2.2.2数值常量
2.2.3字元常量
2.2.4符号常量
2.3变数
2.3.1什幺是变数
2.3.2变数名规则
2.3.3定义变数
2.3.4对变数赋初值
2.3.5常变数
2.4C++的运算符
2.5算术运算符与算术表达式
2.5.1基本的算术运算符
2.5.2算术表达式和运算符的优先权与结合性
2.5.3表达式中各类数值型数据间的混合运算
2.5.4自增(++)和自减(——)运算符
2.5.5强制类型转换运算符
2.6赋值运算符和赋值表达式
2.6.1赋值运算符
2.6.2赋值过程中的类型转换
2.6.3複合赋值运算符
2.6.4赋值表达式
2.7逗号运算符和逗号表达式
习题
第2篇基于过程的程式设计
第3章程式设计初步
3.1基于过程的程式设计和算法
3.1.1算法的概念+
3.1.2算法的表示
3.2C++的程式结构和C++语句
3.3赋值操作
3.4C++的输入与输出
3.4.1输入流与输出流的基本操作
3.4.2在标準输入流与输出流中使用控制符
3.4.3用getchar和putchar函式进行字元的输入和输出
3.4.4用scanf和printf函式进行输入和输出
3.5编写顺序结构的程式
3.6关係运算和逻辑运算
3.6.1关係运算和关係表达式
3.6.2逻辑常量和逻辑变数
3.6.3逻辑运算和逻辑表达式
3.7选择结构和if语句
3.7.1if语句的形式
3.7.2if语句的嵌套
3.7.3条件运算符和条件表达式
3.7.4多分支选择结构与switch语句
3.7.5 编写选择结构的程式
3.8循环结构和循环语句
3.8.1用while语句构成循环
3.8.2用do-while语句构成循环
3.8.3用for语句构成循环
3.8.4几种循环的比较
3.12循环的嵌套79
3.13break语句和continue语句79
3.14编写循环结构的程式80
习题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对被调用函式的声明和函式原型95
*4.5内置函式97
*4.6函式的重载99
*4.7函式模板102
*4.8有默认参数的函式103
4.9函式的嵌套调用105
4.10函式的递归调用109
4.11局部变数和全局变数112
4.11.1局部变数112
4.11.2全局变数113
4.12变数的存储类别115
4.12.1动态存储方式与静态存储方式115
4.12.2自动变数116
4.12.3用static声明静态局部变数116
4.12.4用register声明暂存器变数119
4.12.5用extern声明外部变数119
4.12.6用static声明静态外部变数121
4.13变数属性小结122
4.14关于变数的声明和定义124
4.15内部函式和外部函式125
4.15.1内部函式125
4.15.2外部函式125
4.16预处理命令127
4.16.1宏定义127
4.16.2“档案包含”处理128
4.16.3条件编译131
习题132
第5章数组134
5.1数组的概念134
5.2一维数组的定义和引用135
5.2.1定义一维数组135
5.2.2引用一维数组的元素135
5.2.3一维数组的初始化136
5.2.4一维数组程式举例137
5.3二维数组的定义和引用139
5.3.1定义二维数组139
5.3.2二维数组的引用140
5.3.3二维数组的初始化140
5.3.4二维数组程式举例142
5.4用数组名作函式参数144
5.5字元数组148
5.5.1字元数组的定义和初始化148
5.5.2字元数组的赋值与引用149
5.5.3字元串和字元串结束标誌150
5.5.4字元数组的输入输出151
5.5.5字元串处理函式152
5.5.6字元数组套用举例155
*5.6C++处理字元串的方法——字元串类与字元串变数156
5.6.1字元串变数的定义和引用156
5.6.2字元串变数的运算157
5.6.3字元串数组158
5.6.4字元串运算举例159
习题162
第6章指针164
6.1指针的概念164
6.2变数与指针166
6.2.1定义指针变数166
6.2.2引用指针变数167
6.2.3指针作为函式参数170
6.3数组与指针174
6.3.1指向数组元素的指针174
6.3.2用指针变数作函式参数接收数组地址178
6.3.3多维数组与指针180
6.4字元串与指针184
6.5函式与指针186
6.5.1用函式指针变数调用函式186
6.5.2用指向函式的指针作函式参数187
6.6返回指针值的函式188
6.7指针数组和指向指针的指针188
6.7.1指针数组的概念188
6.7.2指向指针的指针190
6.8有关指针的数据类型和指针运算的小结192
6.8.1有关指针的数据类型的小结192
6.8.2指针运算小结193
*6.9引用194
6.9.1什幺是变数的引用194
6.9.2引用的简单使用195
6.9.3引用作为函式参数195
习题199
第7章自定义数据类型201
7.1结构体类型201
7.1.1结构体概述201
7.1.2结构体类型变数的定义方法及其初始化202
7.1.3结构体变数的引用205
7.1.4结构体数组207
7.1.5指向结构体变数的指针211
7.1.6结构体类型数据作为函式参数214
*7.1.7动态分配和撤销记忆体的运算符new和delete217
7.2共用体219
7.2.1共用体的概念219
7.2.2对共用体变数的访问方式220
7.2.3共用体类型数据的特点220
7.3枚举类型222
7.4用typedef声明类型225
习题227第3篇基于对象的程式设计第8章类和对象231
8.1面向对象程式设计方法概述231
8.1.1什幺是面向对象的程式设计231
8.1.2面向对象程式设计的特点234
8.1.3类和对象的作用235
8.1.4面向对象的软体开发236
8.2类的声明和对象的定义238
8.2.1类和对象的关係238
8.2.2声明类类型238
8.2.3定义对象的方法240
8.2.4类和结构体类型的异同242
8.3类的成员函式243
8.3.1成员函式的性质243
8.3.2在类外定义成员函式244
8.3.3inline成员函式245
8.3.4成员函式的存储方式246
8.4对象成员的引用248
8.4.1通过对象名和成员运算符访问对象中的成员248
8.4.2通过指向对象的指针访问对象中的成员249
8.4.3通过对象的引用变数来访问对象中的成员249
8.5类的封装性和信息隐蔽249
8.5.1公用接口与私有实现的分离249
8.5.2类声明和成员函式定义的分离251
8.5.3面向对象程式设计中的几个名词254
8.6类和对象的简单套用举例254
习题261
第9章关于类和对象的进一步讨论263
9.1构造函式263
9.1.1对象的初始化263
9.1.2构造函式的作用264
9.1.3带参数的构造函式266
9.1.4用参数初始化表对数据成员初始化267
9.1.5构造函式的重载267
9.1.6使用默认参数的构造函式269
9.2析构函式272
9.3调用构造函式和析构函式的顺序274
9.4对象数组275
9.5对象指针277
9.5.1指向对象的指针277
9.5.2指向对象成员的指针278
9.5.3this指针281
9.6共用数据的保护282
9.6.1常对象283
9.6.2常对象成员284
9.6.3指向对象的常指针285
9.6.4指向常对象的指针变数285
9.6.5对象的常引用289
9.6.6const型数据的小结290
9.7对象的动态建立和释放290
9.8对象的赋值和複製291
9.8.1对象的赋值291
9.8.2对象的複製293
9.9静态成员295
9.9.1静态数据成员296
9.9.2静态成员函式298
9.10友元301
9.10.1友元函式301
9.10.2友元类305
9.11类模板306
习题310
第10章运算符重载314
10.1什幺是运算符重载314
10.2运算符重载的方法316
10.3重载运算符的规则318
10.4运算符重载函式作为类成员函式和友元函式320
10.5重载双目运算符323
10.6重载单目运算符328
10.7重载流插入运算符和流提取运算符331
10.7.1重载流插入运算符“<<”331
10.7.2重载流提取运算符“>>”333
10.8不同类型数据间的转换335
10.8.1标準类型数据间的转换335
10.8.2转换构造函式336
10.8.3类型转换函式338
习题343第4篇面向对象的程式设计第11章继承与派生347
11.1继承与派生的概念347
11.2派生类的声明方式350
11.3派生类的构成351
11.4派生类成员的访问属性352
11.4.1公用继承353
11.4.2私有继承355
11.4.3保护成员和保护继承358
11.4.4多级派生时的访问属性361
11.5派生类的构造函式和析构函式363
11.5.1简单的派生类的构造函式363
11.5.2有子对象的派生类的构造函式366
11.5.3多层派生时的构造函式369
11.5.4派生类构造函式的特殊形式372
11.5.5派生类的析构函式372
11.6多重继承373
11.6.1声明多重继承的方法373
11.6.2多重继承派生类的构造函式373
11.6.3多重继承引起的二义性问题376
11.6.4虚基类379
11.7基类与派生类的转换384
11.8继承与组合388
11.9继承在软体开发中的重要意义389
习题390
第12章多态性与虚函式395
12.1多态性的概念395
12.2一个典型的例子396
12.3虚函式401
12.3.1虚函式的作用401
12.3.2静态关联与动态关联405
12.3.3在什幺情况下应当声明虚函式406
12.3.4虚析构函式407
12.4纯虚函式与抽象类408
12.4.1纯虚函式408
12.4.2抽象类409
12.4.3套用实例410
习题416
第13章输入输出流417
13.1C++的输入和输出417
13.1.1输入输出的含义417
13.1.2C++的I/O对C的发展——类型安全和
可扩展性417
13.1.3C++的输入输出流418
13.2标準输出流422
13.2.1cout,cerr和clog流422
13.2.2格式输出425
13.2.3用流成员函式put输出字元429
13.3标準输入流430
13.3.1cin流430
13.3.2用于字元输入的流成员函式432
13.3.3istream类的其他成员函式436
13.4档案操作与档案流439
13.4.1档案的概念439
13.4.2档案流类与档案流对象440
13.4.3档案的打开与关闭441
13.4.4对ASCII档案的操作443
13.4.5对二进制档案的操作448
13.5字元串流453
习题458
第14章C++工具459
14.1异常处理459
14.1.1异常处理的任务459
14.1.2异常处理的方法460
14.1.3在函式声明中进行异常情况指定467
14.1.4在异常处理中处理析构函式467
14.2命名空间469
14.2.1为什幺需要命名空间469
14.2.2什幺是命名空间473
14.2.3使用命名空间解决名字冲突475
14.2.4使用命名空间成员的方法477
14.2.5无名的命名空间479
14.2.6标準命名空间std479
14.3使用早期的函式馆480
习题481
附录A常用字元与ASCII代码对照表483
附录B运算符与结合性484
参考文献486