编辑推荐
本书为普通高等教育“十一五”国家级规划教材,获全国高校出版社changxiao书一等奖,是《C++程序设计(第3版)》的姊妹篇。本书作者深入调查了大学的程序设计课程的现状和发展趋势,参阅了国内外数十种有关C++的教材,认真分析了读者在学习中的困难和认识规律,专门为已学习过C语言的读者构建了便于学习的教材体系,编写了这本C++面向对象程序设计入门教材。
本书对面向对象程序设计的基本理论概念和C++语言的基本内容作了通俗而详尽的说明,并且把这两方面有机地结合起来。第1章介绍面向过程程序设计领域中C++对C的扩充,第2章初步介绍面向对象程序设计的基本知识,在后续各章中由浅入深地介绍怎样编写C++程序,在此过程中自然地具体介绍了面向对象程序设计方法的应用。
本书沿袭了发行逾1250万册《C程序设计(第四版)》的写作风格。全书内容全面,例题丰富,概念清晰,循序渐进,易于学习,即使没有教师讲授,读者也能看懂本书的大部分内容。本书是学习C++程序设计的入门教材,可供各类专业学生使用,也可作为计算机培训班的教材以及读者自学参考。
本书配有两本辅导教材,即《C++面向对象程序设计题解与上机指导(第2版)》(ISBN:9787302362623)和《C++程序设计实践指导》(ISBN:9787302110873)。本书配有PPT教案、主辅教材配套源代码,可到清华大学出版社官网下载。
内容简介
C++是近年来国内外广泛学习和使用的支持面向对象程序设计的现代计算机高级语言,国内许多高校已陆续开设了C++程序设计课程。但是,由于C++涉及的概念很多,语法比较复杂,内容十分广泛,不少人感到学习难度很大,难以入门。针对这种情况,作者谭浩强深入研究了C++的内容和初学者的认知规律,专门为已学习过C语言的读者构建了便于学习的教材体系,编写了这本C++面向对象程序设计入门教材。
《C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材》对面向对象程序设计的基本理论概念和C++语言的基本内容作了通俗而详尽的说明,并且把这两方面有机地结合起来。第1章介绍面向过程程序设计领域中C++对C的扩充,第2章初步介绍面向对象程序设计的基本知识,在后续各章中由浅入深地介绍怎样编写C++程序,在此过程中自然地具体介绍了面向对象程序设计方法的应用。
《C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材》内容全面,概念清晰,例题丰富,通俗易懂,易于学习,可作为大学各专业学习C++面向对象程序设计的基础教材,也适于C++的初学者自学。即使没有教师讲授,读者也基本能看懂本书的大部分内容。
作者简介
谭浩强,教授,我国著名计算机教育专家,1934年生。1958年清华大学毕业学生时代曾担任清华大学学生会主席、北京市人民代表他是我国计算机普及和高校计算机基础教育开拓者之一,现任全国高等院校计算机基础教育研究会荣誉会长、教育部全国计算机应用技术证书考试委员会主任委员。谭浩强教授创造了3个世界纪录:(1)20年来他(及和他人合作)共编著出版了140本计算机著作,此外主编了300多本计算机书籍,是出版科技著作数量zui多的人。(2)他编著和主编的书发行量超过5000万册,是读者zui多的科技作家我国平均每26人、知识分子每1、2人就拥有1本谭浩强教授编著的书(3)他和别人合作编著的《BASIC语言》发行了1250万册,创科技书籍发行量的世界纪录,此外,他编著的《C程序设计》发行了1100万册:他曾在中央电视台主讲了BASIC,FORTRAN,COBOL,Pascal,QBASIC,C,VisualBasic七种计算机语言,观众超过500万人。在我国学习计算机的人中很少有不知道谭浩强教授的。他善于用容易理解的方法和语言说明复杂的概念许多人认为他开创了计算机书籍贴近大众的新风,为我国的计算机普及事业做出了重要的贡献。谭浩强教授曾获全国高校教学成果国家奖、国家科技进步奖,以及北京市政府授予的“有突出贡献专家”称号。《计算机世界》报组织的“世纪评选”把他评为我国“20世纪zui有影响的IT人物”10个人之一(排在第2位),他的功绩是把千百万群众带入计算机的大门。
目录
第1章 C++的初步知识
1.1 从C到C++
1.2 最简单的C++程序
1.3 C++对C的扩充
1.3.1 C++的输入输出
1.3.2 用const定义常变量
1.3.3 函数原型声明
1.3.4 函数的重载
1.3.5 函数模板
1.3.6 有默认参数的函数
1.3.7 变量的引用
1.3.8 内置函数
1.3.9 作用域运算符
1.3.10 字符串变量
1.3.11 动态分配/撤销内存的运算符new和delete
1.3.12 C++对C功能扩展的小结
1.4 C++程序的编写和实现
1.5 关于C++上机实践
习题
第2章 类和对象的特性
2.1 面向对象程序设计方法概述
2.1.1 什么是面向对象的程序设计
2.1.2 面向对象程序设计的特点
2.1.3 类和对象的作用
2.1.4 面向对象的软件开发
2.2 类的声明和对象的定义
2.2.1 类和对象的关系432.2.2 声明类的类型
2.2.3 定义对象的方法
2.2.4 类和结构体类型的异同
2.3 类的成员函数
2.3.1 成员函数的性质
2.3.2 在类外定义成员函数
2.3.3 内置成员函数(inline成员函数)
2.3.4 成员函数的存储方式
2.4 对象成员的引用
2.4.1 通过对象名和成员运算符访问对象中的成员
2.4.2 通过指向对象的指针访问对象中的成员
2.4.3 通过对象的引用来访问对象中的成员
2.5 类和对象的简单应用举例
2.6 类的封装性和信息隐蔽
2.6.1 公用接口与私有实现的分离
2.6.2 类声明和成员函数定义的分离
2.6.3 面向对象程序设计中的几个名词
习题
第3章 怎样使用类和对象
3.1 利用构造函数对类对象进行初始化
3.1.1 对象的初始化
3.1.2 用构造函数实现数据成员的初始化
3.1.3 带参数的构造函数
3.1.4 用参数初始化表对数据成员初始化
3.1.5 构造函数的重载
3.1.6 使用默认参数的构造函数
3.2 利用析构函数进行清理工作
3.3 调用构造函数和析构函数的顺序
3.4 对象数组
3.5 对象指针
3.5.1 指向对象的指针
3.5.2 指向对象成员的指针
3.5.3 指向当前对象的this指针
3.6 共用数据的保护
3.6.1 常对象
3.6.2 常对象成员
3.6.3 指向对象的常指针
3.6.4 指向常对象的指针变量
3.6.5 对象的常引用
3.6.6 const型数据的小结
3.7 对象的动态建立和释放
3.8 对象的赋值和复制
3.8.1 对象的赋值
3.8.2 对象的复制
3.9 静态成员
3.9.1 静态数据成员
3.9.2 静态成员函数
3.10 友元
3.10.1 友元函数
3.10.2 友元类
3.11 类模板
习题
第4章 对运算符进行重载
4.1 为什么要对运算符重载
4.2 对运算符重载的方法
4.3 重载运算符的规则
4.4 运算符重载函数作为类成员函数和友元函数
4.5 重载双目运算符
4.6 重载单目运算符
4.7 重载流插入运算符和流提取运算符
4.7.1 重载流插入运算符“<<”
4.7.2 重载流提取运算符“>>”
4.8 有关运算符重载的归纳
4.9 不同类型数据间的转换
4.9.1 标准类型数据间的转换
4.9.2 用转换构造函数进行不同类型数据的转换
4.9.3 类型转换函数
习题
第5章 继承与派生
5.1 什么是继承与派生
5.2 派生类的声明方式
5.3 派生类的构成
5.4 派生类成员的访问属性
5.4.1 公用继承
5.4.2 私有继承
5.4.3 保护成员和保护继承
5.4.4 多级派生时的访问属性
5.5 派生类的构造函数和析构函数
5.5.1 简单的派生类的构造函数
5.5.2 有子对象的派生类的构造函数
5.5.3 多层派生时的构造函数
5.5.4 派生类构造函数的特殊形式
5.5.5 派生类的析构函数
5.6 多重继承
5.6.1 声明多重继承的方法
5.6.2 多重继承派生类的构造函数
5.6.3 多重继承引起的二义性问题
5.6.4 虚基类
5.7 基类与派生类的转换
5.8 继承与组合
5.9 继承在软件开发中的重要意义
习题
第6章 多态性与虚函数
6.1 什么是多态性
6.2 一个典型的例子
6.3 利用虚函数实现动态多态性
6.3.1 虚函数的作用
6.3.2 静态关联与动态关联
6.3.3 在什么情况下应当声明虚函数
6.3.4 虚析构函数
6.4 纯虚函数与抽象类
6.4.1 纯虚函数
6.4.2 抽象类
6.4.3 应用实例
习题
第7章 输入输出流
7.1 C++的输入和输出
7.1.1 输入输出的含义
7.1.2 C++的I/O对C的发展——类型安全和可扩展性
7.1.3 C++的输入输出流
7.2 标准输出流
7.2.1 cout,cerr和clog流
7.2.2 标准类型数据的格式输出
7.2.3 用流成员函数put输出字符
7.3 标准输入流
7.3.1 cin流
7.3.2 用于字符输入的流成员函数
7.3.3 istream类的其他成员函数
7.4 对数据文件的操作与文件流
7.4.1 文件的概念
7.4.2 文件流类与文件流对象
7.4.3 文件的打开与关闭
7.4.4 对ASCII文件的操作
7.4.5 对二进制文件的操作
7.5 字符串流
习题
第8章 C++工具
8.1 异常处理
8.1.1 异常处理的任务
8.1.2 异常处理的方法
8.1.3 在函数声明中进行异常情况指定
8.1.4 在异常处理中处理析构函数
8.2 命名空间
8.2.1 为什么需要命名空间
8.2.2 什么是命名空间
8.2.3 使用命名空间解决名字冲突
8.2.4 使用命名空间成员的方法
8.2.5 无名的命名空间
8.2.6 标准命名空间std
8.3 使用早期的函数库
习题
附录A 常用字符与ASCII代码对照表
附录B 运算符和结合性
参考文献
前言/序言
前一时期,人们编写的程序多是面向过程的,设计者必须充分地考虑到程序的每一个细节,要指定程序在每一瞬时应执行的动作。C语言是面向过程的结构化和模块化的语言,用于处理小型问题时得心应手,但在处理大型问题时就显得力不从心了。为了处理大型程序的需要,计算机科学家提出了面向对象程序设计的理论,并于20世纪末期在C语言的基础上研制出支持面向对象的C++语言,为处理大程序提供了有力的工具。
近年来,国内许多大学的计算机类专业都开设了C++程序设计课程,一些大学的非计算机专业也开设了C++面向对象程序设计课程,许多学过C语言程序设计的人也想了解和学习C++和面向对象程序设计的有关知识。但是,由于C++涉及概念很多,语法比较复杂,内容十分广泛,使不少人感到学习难度较大,难以入门。
在许多读者的要求和鼓励下,作者于2004年完成了《C++程序设计》一书的编写工作,由清华大学出版社出版并向全国发行。该书以未学过C语言的读者为对象,从面向过程入手介绍程序设计的基本知识和方法,然后介绍用C++进行面向对象程序设计的方法。该书出版后,由于概念清晰,通俗易懂,受到师生们的欢迎和好评,几年内发行了30多万册。
目前在大学理工类专业,普遍开设了C语言程序设计的课程,许多学生在学习C语言后希望对C++面向对象程序设计有所了解,以便日后在需要时能较快地进入该领域。很多师生希望我能出版一本以C语言为起点的C++教材。
为此,2006年我在清华大学出版社出版了《C++面向对象程序设计》一书。该书是在《C++程序设计》一书的基础上编写而成的。考虑到本书的读者已学习过C语言程序设计,因此不必再重新学习面向过程程序设计的部分,而直接从面向对象程序设计入手,将《C++程序设计》一书中介绍面向对象程序设计的内容抽出来改写后单独成书,并且重新写了第1章,介绍C++面向对象程序设计的初步知识以及C++对C在面向过程程序设计方面的改进与增强,为以后各章的学习打下基础。这样的安排使本书内容更集中,篇幅更紧凑。本书仍然保持了通俗易懂、贴近读者、容易入门的特点。希望有助于大学生学习C++课程,初步掌握面向对象程序设计的方法。
经过几年的教学实践后,作者现在对此书进行修订,出版了《C++面向对象程序设计(第2版)》,即本书。现对本书的指导思想作以下的说明。1. 教材应当准确定位,合理取舍内容
首先要弄清楚教材是为什么人写的,他们学习C++的目的是什么,应当学到什么程度,不能无的放矢。应当声明: 本书的对象不是C++的专业开发人员,而是高校各专业的大学生,他们并无从事程序设计的实际经验,将来也不一定是C++的专业开发人员。众所周知,研制C++的初衷是为了解决大型软件开发中遇到的问题,提高软件的开发效率。只有参加过研制大型软件的人才会真正体会到C++的优越性,并善于利用C++的独特机制去进行软件开发。
大学生在学校学习期间学习C++的目的是了解面向对象程序设计方法,能够利用C++编写相对简单的程序,为以后进一步学习和应用打下良好的基础。不可能设想,通过几十小时的学习,就能使一个没有程序设计基础的初学者变成一个熟练的C++开发人员。应当有一个实事求是的分析和估计。因此,本书着力于使读者对C++的全貌和作用有基本的认识,用容易理解的方法讲清楚有关的基本概念和基本方法,而不去罗列C++语法中各种烦琐的细节;否则将会使篇幅过大(许多国外的书厚达近千页),而且会冲淡重点,主次不分,使读者感到枯燥无味。
2. 要设计合适的教材体系
C++程序设计牵涉面向对象程序设计的理论、C++语言的语法以及算法3个方面的内容,其中每一方面都包含十分丰富的内容,都可以分别单独成书。显然在一本教材中深入、详细地介绍以上3个方面的知识是不可能的,必须把它们有机地结合起来,综合应用。不同的书对此采取不同的写法,侧重点有所不同,各有优缺点,适合于不同的读者,需要在教学实践中检验,取长补短,不断完善。
作者认为,要进行C++程序设计当然需要了解面向对象程序设计的有关概念,但是本课程毕竟不是一门面向对象程序设计的理论课程,在本书中不是抽象地介绍面向对象程序设计的理论,而是在介绍C++语言的特点和应用过程中,自然地引出面向对象程序设计的有关概念,通过C++的编程过程理解面向对象程序设计方法。在各章中结合例题介绍有关的算法,引导读者思考怎样构造一个算法。
要用C++编写程序,最基本的要求是正确掌握和运用C++。由于C++语法复杂,内容又多,如果对它缺乏系统了解,将难以真正应用,编写出来的程序将会错误百出,通不过编译,事倍功半。本书的做法是全面而系统地介绍C++的主要特点和功能,引导读者由简到繁地学会编写C++程序。有了C++编程的初步基础后,再进一步提高。这样的方法可能符合大多数学习者的情况,降低了学习难度。
3. C++教材应当体现C++标准
C++是从C语言发展而来的,为了与C兼容,C++保留了C的许多用法,人们在编写C++程序时也常常沿用C的某些传统用法。例如主函数为void类型,无返回值;头文件带后缀.h;使用系统库时不使用命名空间等。但是,ANSI C++标准在一些方面有新的规定,例如要求主函数为int类型,如果程序正常执行则返回0值;系统头文件不带后缀.h;使用系统库时使用命名空间std;增加了字符串类型string等。
虽然C++仍然允许使用从C继承来的传统用法,但作者认为,作为教材,应提倡C++的新方法。应当引导读者从一开始就按照C++标准编写程序,养成C++的编程风格。本书各章都是依据C++标准介绍的,同时也说明允许使用的C的用法。在本书中,程序的形式大致如下:#include//头文件不带后缀.h
#include //包含string头文件,以便能在程序中使用字符串变量
using namespace std; //使用系统库时使用命名空间std
int main() //主函数为int类型
{
string str; //可以定义字符串变量str
return 0; //程序正常执行则返回0
}4. 化解难点,使读者学习C++更容易
作者在写作过程中花了很大的精力去考虑怎样使读者易于接受和理解。作者一贯认为,教材编著者应当与读者将心比心,换位思考,要站在读者的立场上思考问题,帮助他们排除学习中的困难,要善于把复杂的问题简单化,而不应当把简单的问题复杂化,要善于化解难点,深入浅出。不要让读者被一大堆高深莫测的名词术语吓住,有些问题看起来很深奥,其实换一个角度去解释就很容易理解,甚至用一个通俗的例子就把问题说清楚了。
本书用通俗易懂的方法和语言叙述复杂的概念。传统的教学三部曲是:“提出概念—解释概念—举例说明”,作者在多年的计算机教学实践中,采用了新的三部曲:“提出问题—分析和解决问题—归纳分析”。从具体到抽象,从实际到理论,符合初学者的认知规律。本书在引入每一个程序时,都按照以下几个步骤展开:提出问题—编写程序—运行结果—程序分析。由浅入深,逐步展开。
本书便于自学,即使没有老师讲解,读者也能看懂本书的大部分内容。这样,老师教学时就可以不必完全按照教材的内容和顺序详细讲解,而可以选择重点讲授,其余内容由学生自学。
5. 本教材中的程序,是从教学的角度考虑的
本书中的程序是为了帮助读者更好地理解某一方面的教学内容而专门编写的,并不一定是实际应用的程序。一个实际的C++程序需要考虑许多因素,综合各部分知识,有许多注释行,而且一般是多文件的程序,篇幅较长,往往不适合作为教学程序。教学程序对问题进行了简化,尽量压缩不必要的语句,减少注释行,篇幅一般不长,力求使读者能读懂程序。
有些在专业人员看来很“幼稚”的程序,对初学者来说可能是一个很合适的教学用例。不要忘记,教材的任务是用读者容易理解的方法讲清基本的概念和方法。在初步掌握C++编程方法后,可以逐步使程序复杂一些,长一些,更接近真实程序一些。各章中的习题与例题相比,会复杂一些。在学完本课程后,最好完成一个实际的应用程序,以提高实际应用的能力。
6. 要有相应的配套教学参考用书,以满足不同的需要
考虑到不同学校、不同专业、不同读者对学习C++有不同的要求,因此提供配套用书,不同的读者可以根据要求选用。本书有两本配套的教学参考书:
(1) 《C++面向对象程序设计题解与上机指导(第2版)》,清华大学出版社出版。该书提供主教材各章中的全部习题的解答。由于教材的篇幅有限,有些很好的例子无法在教材中列出,我们把它们作为习题,希望读者自己完成,教师也可以从中选择一些习题作为例题讲授。学生除了完成教师指定的习题外,最好把习题解答中的程序看一遍,以更好地理解C++程序,扩
C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材 [谭浩强教授力作,普通高等教育“十一五”国家规划教材,《C++程序设计(第3版)》的姊妹篇。] 下载 mobi epub pdf txt 电子书 格式
C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材 [谭浩强教授力作,普通高等教育“十一五”国家规划教材,《C++程序设计(第3版)》的姊妹篇。] 下载 mobi pdf epub txt 电子书 格式 2024
C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材 [谭浩强教授力作,普通高等教育“十一五”国家规划教材,《C++程序设计(第3版)》的姊妹篇。] 下载 mobi epub pdf 电子书
C++面向对象程序设计(第2版)/中国高等院校计算机基础教育课程体系规划教材 [谭浩强教授力作,普通高等教育“十一五”国家规划教材,《C++程序设计(第3版)》的姊妹篇。] mobi epub pdf txt 电子书 格式下载 2024