《C++程式设计(第3版)》是由谭浩强编着,2015年清华大学出版社出版的中国高等院校计算机基础教育课程体系规划教材。该教材是学习C++的入门教材,可供各类专业学生使用,也可作为计算机培训班的教材以及读者自学参考。
该教材共分四篇,分别为基本知识、基于过程的程式设计、基于对象的程式设计、面向对象的程式设计。全书共14章,主要内容包括C++的初步知识,数据的存储、表示形式和基本运算等。
基本介绍
- 书名:C++程式设计(第3版)
- 作者:谭浩强
- ISBN:9787302408307
- 类别:中国高等院校计算机基础教育课程体系规划教材
- 页数:466页
- 出版社:清华大学出版社
- 出版时间:2015年8月1日
- 装帧:平装
- 开本:16开
- 字数:716千字
- CIP核字号:2015153321
成书过程
修订情况
该教材作者调查了大学的程式设计课程的现状和发展趋势,参阅了中国国内外数十种有关C++的教材,分析了读者在学习中的困难和认识规律修订而成。
该教材由谭浩强编着,薛淑斌和谭亦峰高级工程师参加了教学研讨、大纲讨论、收集材料、调试部分程式及部分编写工作。全国高等院校计算机基础教育研究会以及全国各高校老师对该教材的编写始终给予了支持。
出版工作
2015年8月1日,该教材由清华大学出版社出版。
责任编辑 | 封面设计 | 责任校对 | 责任印製 |
---|---|---|---|
张民 | 傅瑞学 | 白蕾 | 沈露 |
内容简介
该教材共分四篇,分别为基本知识、基于过程的程式设计、基于对象的程式设计、面向对象的程式设计。全书共14章,主要内容包括C++的初步知识,数据的存储、表示形式和基本运算,程式设计初步,利用函式实现指定的功能,利用数组处理批量数据,善于使用指针与引用,用户自定义数据类型,类和对象的特性,怎样使用类和对象,运算符重载,继承与派生,多态性与虚函式,输入输出流,C++工具。
教材目录
第1篇基本知识 第1章C++的初步知识3 *1.1从C到C++3 *1.2最简单的C++程式5 1.3C++程式的构成和书写形式12 1.4C++程式的编写和实现13 1.5关于C++上机实践15 习题15 第2章数据的存储、表示形式和基本运算18 2.1C++的数据类型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常变数28 2.4C++的运算符29 2.5算术运算符与算术表达式30 2.5.1基本的算术运算符30 2.5.2算术表达式和运算符的优先权与结合性30 2.5.3表达式中各类数值型数据间的混合运算30 2.5.4自增(++)和自减(--)运算符31 2.5.5强制类型转换运算符32 2.6赋值运算符和赋值表达式33 2.6.1赋值运算符33 2.6.2赋值过程中的类型转换33 2.6.3複合赋值运算符35 2.6.4赋值表达式35 2.7逗号运算符和逗号表达式36 习题37 第2篇基于过程的程式设计 第3章程式设计初步41 3.1基于过程的程式设计和算法41 3.1.1算法的概念41 3.1.2算法的表示42 3.2C++的程式结构和C++语句43 3.3赋值操作46 3.4C++的输入与输出46 *3.4.1输入流与输出流的基本操作47 *3.4.2在标準输入流与输出流中使用控制符49 3.4.3用getchar和putchar 函式进行字元的输入和输出52 3.4.4用scanf和printf函式进行输入和输出53 3.5编写顺序结构的程式54 3.6关係运算和逻辑运算55 3.6.1关係运算和关係表达式55 *3.6.2逻辑常量和逻辑变数57 3.6.3逻辑运算和逻辑表达式58 3.7选择结构和if语句60 3.7.1if语句的形式60 3.7.2if语句的嵌套63 3.7.3条件运算符和条件表达式64 3.7.4多分支选择结构与switch 语句65 3.7.5编写选择结构的程式67 3.8循环结构和循环语句69 3.8.1用while语句构成循环70 3.8.2用dowhile语句构成循环71 3.8.3用for语句构成循环72 3.8.4循环的嵌套74 3.8.5提前结束循环(break语句和continue语句)74 3.8.6编写循环结构的程式75 习题80 第4章利用函式实现指定的功能83 4.1什幺是函式83 4.1.1为什幺需要函式83 4.1.2函式调用举例84 4.1.3函式的分类85 4.2定义函式的一般形式85 4.2.1定义无参函式的一般形式85 4.2.2定义有参函式的一般形式86 4.3函式参数和函式的值86 4.3.1形式参数和实际参数86 4.3.2函式的返回值88 4.4函式的调用89 4.4.1函式调用的一般形式89 4.4.2函式调用的方式89 4.4.3对被调用函式的声明和函式原型90 4.5函式的嵌套调用92 4.6函式的递归调用95 *4.7内置函式98 *4.8函式的重载100 *4.9函式模板102 *4.10有默认参数的函式104 4.11局部变数和全局变数106 4.11.1局部变数106 4.11.2全局变数107 4.12变数的存储类别109 4.12.1动态存储方式与静态存储方式109 4.12.2自动变数110 4.12.3用static声明静态局部变数110 4.12.4用register声明暂存器变数113 4.12.5用extern声明外部变数113 4.12.6用static声明静态外部变数115 4.13变数属性小结115 4.14关于变数的声明和定义118 4.15内部函式和外部函式119 4.15.1内部函式119 4.15.2外部函式119 4.16头档案121 *4.16.1头档案的内容121 4.16.2关于C++标準库和头档案的形式121 习题122 第5章利用数组处理批量数据124 5.1为什幺需要用数组124 5.2定义和引用一维数组125 5.2.1定义一维数组125 5.2.2引用一维数组的元素125 5.2.3一维数组的初始化126 5.2.4一维数组程式举例126 5.3定义和引用二维数组128 5.3.1定义二维数组129 5.3.2引用二维数组的元素130 5.3.3二维数组的初始化130 5.3.4二维数组程式举例131 5.4用数组作函式参数133 5.5字元数组137 5.5.1定义和初始化字元数组137 5.5.2字元数组的赋值与引用138 5.5.3字元串和字元串结束标誌139 5.5.4字元数组的输入输出140 5.5.5使用字元串处理函式对字元串进行操作141 5.5.6字元数组套用举例144 *5.6C++处理字元串的方法——字元串类与字元串变数145 5.6.1字元串变数的定义和引用146 5.6.2字元串变数的运算147 5.6.3字元串数组147 5.6.4字元串运算举例148 习题151 第6章善于使用指针与引用153 6.1什幺是指针153 6.2变数与指针155 6.2.1定义指针变数155 6.2.2引用指针变数157 6.2.3用指针作函式参数159 6.3数组与指针164 6.3.1指向数组元素的指针164 6.3.2用指针变数作函式形参接收数组地址166 6.4字元串与指针169 6.5函式与指针171 6.6返回指针值的函式172 6.7指针数组和指向指针的指针 173 6.7.1指针数组173 *6.7.2指向指针的指针175 *6.8const指针177 *6.9void指针类型179 6.10有关指针的数据类型和指针运算的小结180 6.10.1有关指针的数据类型的小结180 6.10.2指针运算小结180 *6.11引用182 6.11.1什幺是变数的引用182 6.11.2引用的简单使用183 6.11.3引用作为函式参数184 习题188 第7章用户自定义数据类型190 7.1结构体类型190 7.1.1为什幺需要用结构体类型190 | 7.1.2结构体类型变数的定义方法及其初始化191 7.1.3引用结构体变数193 7.1.4结构体数组195 7.1.5指向结构体变数的指针197 7.1.6结构体类型数据作为函式参数200 *7.1.7用new和delete运算符进行动态分配和撤销存储空间203 7.2枚举类型205 7.3用typedef声明新的类型名208 习题211 第3篇基于对象的程式设计 第8章类和对象的特性215 8.1面向对象程式设计方法概述215 8.1.1什幺是面向对象的程式设计215 8.1.2面向对象程式设计的特点219 8.1.3类和对象的作用220 8.1.4面向对象的软体开发221 8.2类的声明和对象的定义222 8.2.1类和对象的关係222 8.2.2声明类类型222 8.2.3定义对象的方法225 8.3类的成员函式226 8.3.1成员函式的性质226 8.3.2在类外定义成员函式227 8.3.3内置成员函式228 8.3.4成员函式的存储方式229 8.4对象成员的引用231 8.4.1通过对象名和成员运算符访问对象中的成员231 8.4.2通过指向对象的指针访问对象中的成员232 8.4.3通过对象的引用来访问对象中的成员232 8.5类的封装性和信息隐蔽232 8.5.1公用接口与私有实现的分离232 8.5.2类声明和成员函式定义的分离234 8.5.3面向对象程式设计中的几个名词235 8.6类和对象的简单套用举例236 习题243 第9章怎样使用类和对象245 9.1利用构造函式对类对象进行初始化245 9.1.1对象的初始化245 9.1.2用构造函式实现数据成员的初始化246 9.1.3带参数的构造函式248 9.1.4用参数初始化表对数据成员初始化250 9.1.5构造函式的重载251 9.1.6使用默认参数的构造函式252 9.2析构函式255 9.3调用构造函式和析构函式的顺序257 9.4对象数组259 9.5对象指针261 9.5.1指向对象的指针261 9.5.2指向对象成员的指针262 9.5.3this指针265 9.6共用数据的保护266 9.6.1常对象266 9.6.2常对象成员268 9.6.3指向对象的常指针269 9.6.4指向常对象的指针变数270 9.6.5对象的常引用273 9.6.6const型数据的小结274 9.7对象的动态建立和释放274 9.8对象的赋值和複製275 9.8.1对象的赋值275 9.8.2对象的複製277 9.9静态成员279 9.9.1静态数据成员280 9.9.2静态成员函式282 9.10友元285 9.10.1友元函式285 9.10.2友元类289 9.11类模板290 习题294 第10章运算符重载297 10.1什幺是运算符重载297 10.2运算符重载的方法299 10.3重载运算符的规则302 10.4运算符重载函式作为类成员函式和友元函式303 10.5重载双目运算符307 10.6重载单目运算符311 10.7重载流插入运算符“<<”和流提取运算符“>>”314 10.7.1重载流插入运算符“<<”314 10.7.2重载流提取运算符“>>”316 10.8有关运算符重载的归纳 318 10.9不同类型数据间的转换319 10.9.1标準类型数据间的转换319 10.9.2用转换构造函式进行不同类型数据的转换320 10.9.3类型转换函式321 习题327 第4篇面向对象的程式设计 第11章继承与派生331 11.1继承与派生的概念331 11.2派生类的声明方式334 11.3派生类的构成334 11.4派生类成员的访问属性336 11.4.1公用继承337 11.4.2私有继承339 11.4.3保护成员和保护继承342 11.4.4多级派生时的访问属性346 11.5派生类的构造函式和析构函式347 11.5.1简单的派生类的构造函式347 11.5.2有子对象的派生类的构造函式351 11.5.3多层派生时的构造函式354 11.5.4派生类构造函式的特殊形式356 11.5.5派生类的析构函式356 11.6多重继承357 11.6.1声明多重继承的方法357 11.6.2多重继承派生类的构造函式357 11.6.3多重继承引起的二义性问题360 11.6.4虚基类363 11.7基类与派生类的转换368 11.8继承与组合371 11.9继承在软体开发中的重要意义373 习题374 第12章多态性与虚函式379 12.1多态性的概念379 12.2一个典型的例子380 12.3利用虚函式实现动态多态性385 12.3.1虚函式的作用385 12.3.2静态关联与动态关联389 12.3.3在什幺情况下应当声明虚函式391 12.3.4虚析构函式391 12.4纯虚函式与抽象类393 12.4.1纯虚函式393 12.4.2抽象类393 12.4.3套用实例394 习题400 第13章输入输出流401 13.1C++的输入和输出401 13.1.1输入输出的含义401 13.1.2C++的I/O对C的发展——类型安全和可扩展性401 13.1.3C++的输入输出流402 13.2标準输出流407 13.2.1cout,cerr和clog流407 13.2.2标準类型数据的格式输出409 13.2.3用流成员函式put输出字元412 13.3标準输入流414 13.3.1cin流414 13.3.2用于字元输入的流成员函式414 13.3.3istream类的其他成员函式416 13.4对数据档案的操作与档案流419 13.4.1档案的概念419 13.4.2档案流类与档案流对象420 13.4.3档案的打开与关闭421 13.4.4对ASCII档案的操作423 13.4.5对二进制档案的操作428 13.5字元串流433 习题438 第14章C++工具440 14.1异常处理440 14.1.1异常处理的任务440 14.1.2异常处理的方法441 14.1.3在函式声明中进行异常情况指定448 14.1.4在异常处理中处理析构函式448 14.2命名空间450 14.2.1为什幺需要命名空间451 14.2.2什幺是命名空间454 14.2.3使用命名空间解决名字冲突456 14.2.4使用命名空间成员的方法458 14.2.5无名的命名空间460 14.2.6标準命名空间std460 14.3使用早期的函式馆461 习题462 参考文献467 |
(注:目录排版顺序为从左列至右列)
教学资源
该教材有《C++程式设计题解和上机指导(第3版)》和《C++程式设计实践指导》两本配套教材。
书名 | 书号 | 出版社 | 出版时间 | 作者 |
---|---|---|---|---|
《C++程式设计题解和上机指导(第3版)》 | 9787302408420 | 清华大学出版社 | 2015.08.01 | 谭浩强 |
《C++程式设计实践指导》 | 9787302110873 | 清华大学出版社 | 2005.07.01 | 谭浩强 |
教材特色
该书降低入门起点,不需要C语言的基础,从零起点介绍程式设计和C++,以简单的语言对C++的许多难懂的概念作了说明,降低了初学者学习的困难。
该教材依据ANSIC++标準进行介绍,引导读者从一开始就按C++的要求编程,而不是过多地迁就C语言的习惯。
该教材在介绍编程例题时,一般採取以下步骤展开:给出任务——解题思路——编写程式——运行结果——程式分析——说明与注意。以帮助读者掌握程式设计的思路与方法。
该教材所举的程式,是从教学的角度考虑的,是为了帮助读者理解和套用某一方面的教学内容而专门编写的,并不一定是实际套用的程式。
作者简介
谭浩强,男,汉族,1934年11月出生,广东省人。曾担任清华大学团委副书记、清华大学绵阳分校党委常委、清华大学分校副校长等职务,同时承担教学工作。曾获全国高校教学成果奖国家级奖、国家科技进步奖、多项部委级优秀教材奖,北京市政府授予“有突出贡献专家”称号,被国家科委、中国科协表彰为“全国优秀科普工作者”,获国务院特殊津贴。