3.2 填空题
3.2.1 C++中多态性包括两种多态性:(1)和(2)。前者是通过(3)实现的,而后者是通过(4)和(5)来实现的。 答案:(1)编译时的
(2)运行时的
(3)函数和运算符的重载 (4)类继承关系 (5)虚函数
3.2.2 纯虚函数定义时在函数参数表后加(1),它表明程序员对函数(2),其本质是将指向
函数体的指针定为(3)。 答案:(1)=0
(2)不定义 (3)NULL
3.2.3在基类中将一个成员函数说明成虚函数后,在其派生类中只要(1)、(2)和(3)完全一样就认为是虚函数,而不必再加关键字(4)。如有任何不同,则认为是(5)而不是虚函数。除了非成员函数不能作为虚函数外,(6)、(7)和(8)也不能作为虚函数。 答案:(1)同虚函数名
(2)同参数表
(3)同返回类型。如基类中返回基类指针,而派生类中返回派生类指针是允许的 (4)virtual (5)重载
(6)静态成员函数 (7)内联函数 (8)构造函数 第三大题答案: 3.1答案:
#include
CStudent(char *, char*,char*,int ,float); CStudent(CStudent &s); void display();
float operator+(CStudent s1); };
CStudent::CStudent(char *name, char*native,char*code,int age,float score)
{ strcpy(this->name,name); strcpy(this->nativeplace,native); strcpy(this->code,code); this->age=age; this->score=score; }
CStudent::CStudent(CStudent &s) { strcpy(this->name,s.name); strcpy(this->nativeplace,s.nativeplace); strcpy(this->code,s.code); this->age=s.age; this->score=s.score; }
void CStudent::display() { cout< float CStudent::operator +(CStudent s1) { return this->score+s1.score; } void main() { CStudent w(\ w.display(); CStudent c(\ c.display(); cout< 3.2答案: #include } float GetArea() { float t=(a+b+c)/2; return sqrt(t*(t-a)*(t-b)*(t-c)); } float operator +(CTriangle t) { return this->GetArea()+t.GetArea(); } }; void main() { CTriangle tr1(3,4,5),tr2(6,8,10); cout< 3.3答案: #include public: virtual void f1() {cout<<\void f2() {cout<<\}; class DerivedClass: public BaseClass { public: void f1() {cout<<\void f2() {cout<<\}; void main() { DerivedClass d1; BaseClass* Bptr; DerivedClass* Dptr; Bptr=&d1; Bptr->f1(); Bptr->f2(); Dptr=&d1; Dptr->f1(); Dptr->f2(); } 习题四 一、选择题 1.D 2.A 3.B 4.C 5. C 6.C 7. A 二、简答题 1.什么叫做流?流的提取和插入是指什么?I/O流在C++中起着怎样的作用? 答:流是一种抽象,它负责在数据的生产者(程序/文件)和数据的消费者(文件/程序)之间建立联系,并管理数据的流动。 一般意义下的读操作在流数据抽象中被称为(从流中)提取,写操作被称为(向流中)插入。 完成数据从动态(内存)到静态(外存)的转换,或着是从静态(外存)到动态(内存)的转换。 2.什么是字节流、字符流和二进制流? 答:根据对字节内容的解释方式,字节流分为字符流(也称文本流)和二进制流。 字符流将字节流的每个字节按ASCⅡ字符解释,它在数据传输时需作转换,效率较低。例如源程序文件和文本文件都是字符流。由于ASCⅡ字符是标准的,所以字符流可以直接编辑,显示或打印,字符流产生的文件通行于各类计算机。 二进制流将字节流的每个字节以二进制方式解释,它在数据传输时不作任何转换,故效率高。但各类计算机对数据的二进制存放格式各有差异,且无法人工阅读,故二进制流产生的文件可移植性较差。 3.cerr和clog作用是什么?有何区别? 答:对于输入提示信息或输出结果而言, cerr和clog的用法相同,但作用不同。cerr的作用是向标准错误设备(standard error device)输出有关出错信息。cerr流中的信息只能在显示器输出。当调试程序时,往往不希望程序运行时的出错信息被送到其他文件,而要求在显示器上及时输出,这时应该用cerr,cerr流中的信息是用户根据需要指定的。clog流对象也是标准错误流,它是console log的缩写。它的作用和cerr相同,都是在终端显示器上显示出错信息。不同的是cerr不经过缓冲区,直接向显示器上输出有关信息,而clog中的信息存放在缓冲区中,缓冲区满后或遇endl时向显示器输出。 4.用什么方法来控制输入输出流中出现的错误? 答:为提高程序的可靠性,应在程序中检测I/O流的操作是否正常。当检测到流操作出现错误时,可以通过异常处理来解决问题。 5.比较读写文本文件与二进制文件的异同。 答:从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。 ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为: ASC码: 00110101 00110110 00110111 00111000 ↓ ↓ ↓ ↓ 十进制码: 5 6 7 8 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。 由于是按字符显示,因此能读懂文件内容。 二进制文件是按二进制的编码方式来存放文件的。 例如, 数5678的存储形式为: 00010110 00101110只占二个字节。二进制文件虽然也可在屏幕上显示, 但其内容无法读懂。C++系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。 输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。 因此也把这种文件称作“流式文件”。 6.随机读写是什么意思,常用于哪种类型的文件? 答:在C++中可以由程序移动文件指针,从而实现文件的随机访问,即可读写流中任意一段内容。一般文本文件很难准确定位,所以随机访问多用于二进制文件。 7.文件流和字符串流有什么区别? 答:文件在C++看来是字符流或二进制流,文件流是以外存文件为输入输出对象的数据,所以文件流是与设备相关的。可以把流的概念应用到字符串(String)上。这样字符串就可以看作字符串流。字符串流不是以外存文件为输入输出的对象,而以内存中用户定义的字符数组为输入输出的对象。字符串流是与内存相关,所以也称内存流。可以用输入输出操作来完成字符串流的操作。 三、编程题 1. x= 468y= -3.42565 x=468 y=-3.42565 x=+468******y=-3.43***** 2. 生成一个名称为data.txt文件,内容:This is test data 3.源程序。 #include for(int n=8;n>0;n--) cout< return 0; } 4.源程序。 #include char f2[256]; cout<<\请输入目标文件名?\ 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库C++程序设计教程--面向对象分册(郑秋生)答案(4)在线全文阅读。
相关推荐: