当前位置:主页 > 课后答案 > C++习题答案
C++面向对象程序设计

《C++面向对象程序设计》课后习题答案

  • 更新:2021-03-25
  • 大小:10.2 MB
  • 类别:C++
  • 作者:谭浩强
  • 出版:清华大学出版社
  • 格式:PDF

  • 资源介绍
  • 相关推荐

前一时期,人们编写的程序多是面向过程的,设计者必须充分地考虑到程序的每一个细节,要指定程序在每一瞬时应执行的动作。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++课程,初步掌握面向对象程序设计的方法。

目录

  • 第1章C++的初步知识1
  • 1.1从C到C++1
  • 1.2最简单的C++程序2
  • 1.3C++对C的扩充8
  • 1.3.1C++的输入输出8
  • 1.3.2用const定义常变量11
  • 1.3.3函数原型声明11
  • 1.3.4函数的重载12
  • 1.3.5函数模板14
  • 1.3.6有默认参数的函数16
  • 1.3.7变量的引用17
  • 1.3.8内置函数24
  • 1.3.9作用域运算符25
  • 1.3.10字符串变量26
  • 1.3.11动态分配/撤销内存的运算符new和delete29
  • 1.3.12C++对C功能扩展的小结30
  • 1.4C++程序的编写和实现31
  • 1.5关于C++上机实践32
  • 习题33
  • 第2章类和对象的特性36
  • 2.1面向对象程序设计方法概述36
  • 2.1.1什么是面向对象的程序设计36
  • 2.1.2面向对象程序设计的特点39
  • 2.1.3类和对象的作用40
  • 2.1.4面向对象的软件开发41
  • 2.2类的声明和对象的定义43
  • 2.2.1类和对象的关系432.2.2声明类的类型43
  • 2.2.3定义对象的方法45
  • 2.2.4类和结构体类型的异同47
  • 2.3类的成员函数48
  • 2.3.1成员函数的性质48
  • 2.3.2在类外定义成员函数48
  • 2.3.3内置成员函数(inline成员函数)49
  • 2.3.4成员函数的存储方式51
  • 2.4对象成员的引用52
  • 2.4.1通过对象名和成员运算符访问对象中的成员53
  • 2.4.2通过指向对象的指针访问对象中的成员53
  • 2.4.3通过对象的引用来访问对象中的成员54
  • 2.5类和对象的简单应用举例54
  • 2.6类的封装性和信息隐蔽61
  • 2.6.1公用接口与私有实现的分离61
  • 2.6.2类声明和成员函数定义的分离62
  • 2.6.3面向对象程序设计中的几个名词65
  • 习题66
  • 第3章怎样使用类和对象68
  • 3.1利用构造函数对类对象进行初始化68
  • 3.1.1对象的初始化68
  • 3.1.2用构造函数实现数据成员的初始化69
  • 3.1.3带参数的构造函数71
  • 3.1.4用参数初始化表对数据成员初始化73
  • 3.1.5构造函数的重载74
  • 3.1.6使用默认参数的构造函数76
  • 3.2利用析构函数进行清理工作79
  • 3.3调用构造函数和析构函数的顺序81
  • 3.4对象数组83
  • 3.5对象指针85
  • 3.5.1指向对象的指针85
  • 3.5.2指向对象成员的指针85
  • 3.5.3指向当前对象的this指针88
  • 3.6共用数据的保护90
  • 3.6.1常对象90
  • 3.6.2常对象成员91
  • 3.6.3指向对象的常指针93
  • 3.6.4指向常对象的指针变量93
  • 3.6.5对象的常引用96
  • 3.6.6const型数据的小结97
  • 3.7对象的动态建立和释放98
  • 3.8对象的赋值和复制99
  • 3.8.1对象的赋值99
  • 3.8.2对象的复制101
  • 3.9静态成员103
  • 3.9.1静态数据成员104
  • 3.9.2静态成员函数106
  • 3.10友元109
  • 3.10.1友元函数109
  • 3.10.2友元类113
  • 3.11类模板114
  • 习题118
  • 第4章对运算符进行重载122
  • 4.1为什么要对运算符重载122
  • 4.2对运算符重载的方法124
  • 4.3重载运算符的规则127
  • 4.4运算符重载函数作为类成员函数和友元函数128
  • 4.5重载双目运算符132
  • 4.6重载单目运算符137
  • 4.7重载流插入运算符和流提取运算符139
  • 4.7.1重载流插入运算符“<<”140
  • 4.7.2重载流提取运算符“>>”142
  • 4.8有关运算符重载的归纳144
  • 4.9不同类型数据间的转换145
  • 4.9.1标准类型数据间的转换145
  • 4.9.2用转换构造函数进行不同类型数据的转换145
  • 4.9.3类型转换函数147
  • 习题153
  • 第5章继承与派生154
  • 5.1什么是继承与派生154
  • 5.2派生类的声明方式157
  • 5.3派生类的构成157
  • 5.4派生类成员的访问属性159
  • 5.4.1公用继承160
  • 5.4.2私有继承162
  • 5.4.3保护成员和保护继承165
  • 5.4.4多级派生时的访问属性169
  • 5.5派生类的构造函数和析构函数170
  • 5.5.1简单的派生类的构造函数171
  • 5.5.2有子对象的派生类的构造函数174
  • 5.5.3多层派生时的构造函数177
  • 5.5.4派生类构造函数的特殊形式179
  • 5.5.5派生类的析构函数180
  • 5.6多重继承180
  • 5.6.1声明多重继承的方法181
  • 5.6.2多重继承派生类的构造函数181
  • 5.6.3多重继承引起的二义性问题184
  • 5.6.4虚基类187
  • 5.7基类与派生类的转换192
  • 5.8继承与组合195
  • 5.9继承在软件开发中的重要意义197
  • 习题198
  • 第6章多态性与虚函数203
  • 6.1什么是多态性203
  • 6.2一个典型的例子204
  • 6.3利用虚函数实现动态多态性209
  • 6.3.1虚函数的作用209
  • 6.3.2静态关联与动态关联213
  • 6.3.3在什么情况下应当声明虚函数215
  • 6.3.4虚析构函数215
  • 6.4纯虚函数与抽象类217
  • 6.4.1纯虚函数217
  • 6.4.2抽象类217
  • 6.4.3应用实例218
  • 习题225
  • 第7章输入输出流226
  • 7.1C++的输入和输出226
  • 7.1.1输入输出的含义226
  • 7.1.2C++的I/O对C的发展——类型安全和可扩展性226
  • 7.1.3C++的输入输出流227
  • 7.2标准输出流232
  • 7.2.1cout,cerr和clog流232
  • 7.2.2标准类型数据的格式输出234
  • 7.2.3用流成员函数put输出字符239
  • 7.3标准输入流240
  • 7.3.1cin流240
  • 7.3.2用于字符输入的流成员函数242
  • 7.3.3istream类的其他成员函数245
  • 7.4对数据文件的操作与文件流249
  • 7.4.1文件的概念249
  • 7.4.2文件流类与文件流对象250
  • 7.4.3文件的打开与关闭251
  • 7.4.4对ASCII文件的操作253
  • 7.4.5对二进制文件的操作258
  • 7.5字符串流264
  • 习题268
  • 第8章C++工具270
  • 8.1异常处理270
  • 8.1.1异常处理的任务270
  • 8.1.2异常处理的方法271
  • 8.1.3在函数声明中进行异常情况指定278
  • 8.1.4在异常处理中处理析构函数279
  • 8.2命名空间281
  • 8.2.1为什么需要命名空间281
  • 8.2.2什么是命名空间284
  • 8.2.3使用命名空间解决名字冲突286
  • 8.2.4使用命名空间成员的方法288
  • 8.2.5无名的命名空间290
  • 8.2.6标准命名空间std290
  • 8.3使用早期的函数库291
  • 习题292
  • 附录A常用字符与ASCII代码对照表294
  • 附录B运算符和结合性295
  • 参考文献297
  • 第14章实验安排220
  • 14.1实验1C程序的运行环境和运行C程序的方法220
  • 14.2实验2最简单的C程序设计——顺序程序设计222
  • 14.3实验3选择结构程序设计224
  • 14.4实验4循环结构程序设计225
  • 14.5实验5利用数组(一)226
  • 14.6实验6利用数组(二)227
  • 14.7实验7函数调用(一)228
  • 14.8实验8函数调用(二)229
  • 14.9实验9善用指针(一)230
  • 14.10实验10善用指针(二)231
  • 14.11实验11使用结构体232
  • 14.12实验12文件操作233
  • 参考文献234

资源下载

资源下载地址1:https://pan.baidu.com/s/1j5UP8KIanjD_6n7ivSUGDg

相关资源

网友留言