东师C++程序设计20春在线作业1答案

下列关于构造函数和析构函数的描述,错误的是( )。

A.析构函数中调用虚函数采用静态联编

B.对虚析构函数的调用可以采用动态联编

C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数

D.构造函数可以声明为虚函数


正确答案:D
解析: 构造函数的主要作用是对数据成员初始化。构造函数不能声明为虚函数,这是因为在执行构造函数时类对象还未完成建立过程,当然谈不上函数与类对象的关联。


当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。()


参考答案:正确


在派生类中重新定义虚函数时,除了(),其它方面都必须与基类中相应的虚函数保持一致。

A、参数个数

B、参数类型

C、函数体

D、函数名称


参考答案:C


下面关于虚函数的描述,错误的是( )。

A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数

B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数

C.虚函数可以是另一个类的友元函数,但不能是静态成员函数

D.基类中说明的纯虚函数在其任何派生类中都必须实现


正确答案:B
基类中说明的虚函数,在派生类中自然就是虚函数,对于纯虚函数必须在后面继承的派生类中给出具体的实现;静态成员函数不能进行动态联编,所以虚函数不能是静态的。


下列关于纯虚函数的描述中,正确的是( )。

A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数

B.纯虚函数的声明总是以“=0;”结束

C.派生类必须实现基类的纯虚函数

D.含有纯虚函数的类不能是派生类


正确答案:B
解析:基类的虚函数有时候不可能被调用到,这时可定义该虚函数为纯虚函数。纯虚函数没有函数体,但一定要进行说明,它告诉编译器,派生类必须定义该成员函数。纯虚函数是一种特殊的虚函数,纯虚函数是在虚函数的后面加上“=0”,表示该虚函数无函数体,并非赋值运算。纯虚函数的一般格式为:virtual类型>函数名>(参数表>)=0;。在很多情况下,在基类中不能对虚函数给出有意义的实现,而把它说明为纯虚函数.


C 程序设计19春在线作业1-0003试卷总分:100 得分:100一、单选题 (共 20 道试题,共 60 分)1.假定classA为一个类,a为该类公有的数据成员,px为指向该类对象的指针,则访问px所指对象中数据成员a的格式为()。A.px(a)B.pxaC.px-aD.px.a答案:C2.关于虚函数的描述中,()是正确的。A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中说明了虚函数后,派生类中将其对应的函数可不必说明为虚函数D.派生类的虚函数与基类的虚函数具有不同的参数个数和类型答案:C3.下列函数中,()是对文件进行写操作的。A.get()B.read()C.seekg()D.put()答案:D4.进行文件操作需包含头文件()。A.fstream.hB.ostream.hC.stdio.hD.stdlib.h答案:A5.关于成员函数特征的下述描述中,()是错误的。A.成员函数一定是内联函数B.成员函数可以重载C.成员函数可以设置参数的缺省值D.成员函数可以是静态的答案:A6.假设已经有定义const char*const name=chen; 下面的语句中正确的是()。A.name3= a;B.name=lin;C.name=new char5;D.coutname3;答案:D7.编译时的多态性通过使用() 实现。A.构造函数B.虚函数C.重载函数D.析构函数答案:C8.建立包含有对象成员的派生类对象时,自动调用构造函数的执行顺序依次为()的构造函数。A.基类、自己所属类、对象成员所属类B.对象成员所属类、基类、自己所属类C.自己所属类、对象成员所属类、基类D.基类、对象成员所属类、自己所属类答案:D9.C+中引入友元的作用是()。A.提高程序的运用效率B.加强类的封装性C.实现数据的隐藏性D.增加成员函数的种类答案:A10.如果类A被说明成类B的友元,则()。A.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成员函数不得访问类B的成员D.类B不一定是类A的友元答案:D11.类模板的使用实际上是将类模板实例化成一个具体的()。A.类B.对象C.模板函数D.模板类答案:D12.以下叙述正确的是()。A.函数的定义和函数的调用都可以嵌套B.函数的定义和函数的调用均不可以嵌套C.函数的定义不可以嵌套,函数的调用可以嵌套D.函数的定义可以嵌套,函数的调用不可以嵌套答案:C13.下列类中()不是输入流类istream的派生类。A.ifstreamB.istrstreamC.iostreamD.ofstream答案:D14.应在下列程序划线处填入的正确语句是()。 #include class Base public: void fun()coutBase:funENDL; ; class Derived:public Base void fun() _ /显示调用基类的函数fun() coutDerived:funfun();答案:C15.假定变量x定义为“int x=8;”,要使rx成为x的引用(别名),rx应定义为()。A.int rx=x;B.int rx=&x;C.int *rx=&x;D.int &rx=x;答案:D16.C+的继承性允许派生类继承基类的()。A.部分特性,并允许增加新的特性或重定义基类的特性B.部分特性,但不允许增加新的特性或重定义基类的特性C.所有特性,并允许增加新的特性或重定义基类的特性D.所有特性,但不允许增加新的特性或重定义基类的特性答案:C17.若已知char str20,有语句 cinstr;,当输入为:This is a cat,则str中的内容为()。A.This is a catB.ThisC.This isD.This is a答案:B18.下面对类的构造函数的定义是() 。A.void X:X( 参数 )B.X:X( 参数 )C.int X:X( 参数 )D.float X:X( 参数 )答案:B19.若已定义了person类及person类的两个对象p1和p2,则执行语句p1=p2;将调用p1的()。A.构造函数B.拷贝构造函数C.析构函数D.赋值运算符重载函数答案:D20.假定classA为一个类,如果用户未定义析构函数,则系统为该类定义的默认析构函数为()。A.classA:classA()B.classA:classA()C.classA:classA(int=0)D.void classA:classA()答案:A二、判断题 (共 20 道试题,共 40 分)21.拷贝构造函数使用本类对象的引用作为参数初始化新创建的对象。答案:正确22.构造函数是不能被派生类继承的。答案:正确23.类和对象之间的关系是具体和抽象的关系。答案:错误24.类中可以包含各种数据类型的数据成员,但不能有其他类对象。答案:错误25.私有静态数据成员不能被类外部函数访问,也不能用对象进行访问。答案:正确26.C+的变量声明非常灵活,它允许变量声明与可执行语句在程序中交替出现。答案:正确27.C+语言对同一字母的大小写将认为是同一字符。答案:错误28.C+允许定义有默认参数的函数,默认参数要在函数声明中提供,当又有声明又有定义时,定义中不允许默认参数。答案:正确29.ofstream是用于读文件的文件流。答案:错误30.new和delete运算符不可以被重载。答案:错误31.如果派生类没有实现虚函数,那么它将使用它的基类的虚函数。答案:正确32.析构函数可以是虚函数,构造函数不能定义为虚函数。答案:正确33.在文件操作结束时,可以用close()成员函数关闭该文件。答案:正确34.前缀自增运算符用成员函数方式重载时,其参数个数为0,用友元函数重载时,其参数个数为1。答案:正确35.构造函数和析构函数都不能说明返回值类型,甚至说明为void类型也不行。答案:正确36.可以在类的构造函数中对静态数据成员进行初始化。答案:错误37.fstream是既可用于写文件又可用于读文件的文件流。答案:正确38.类是C+中自定义的数据类型。答案:正确39.函数模板不可以重载。答案:错误40.构造函数和析构函数都不能带参数。答案:错误

下面关于虚函数的描述中,正确的是( )。

A.基类中利用virtual关键字说明一个虚函数后,其派生类中定义相同的原型函数时可不必加virtual来说明

B.虚函数是非成员函数

C.虚函数是static类型的成员函数

D.派生类中的虚函数与基类中类型相同的虚函数具有不同的参数个数或类型


正确答案:A
解析:虚函数是非static类型的成员函数,基类中可以利用virtual关键字来声明虚函数,派生类中定义相同原型函数时可不必加virtual说明,直接重写基类中的函数。在派生类中的虚函数必须与基类中的虚函数具有相同的参数个数与类型。


下列是关于虚函数的描述,正确的是______。

A.虚函数是一个static类型的成员函数

B.虚函数是一个非成员函数

C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明

D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型


正确答案:C
解析:根据C++语法规定,虚函数在继承层次结构中总是自动从基类传播下去,因此,基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明。


下列关于虚函数的说法中,正确的是( )。

A.如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数

B.虚函数不得声明为静态函数

C.虚函数不得声明为另一个类的私有函数

D.派生类必须重新定义基类的虚函数


正确答案:B
解析:使用虚函数时必须注意下列事项:①只有类的成员函数才能说明为虚函数。这是因为虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。②静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。③内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。④构造函数不能是虚函数,因为构造时对象还是一片未定型的空间。只有在构造完成后,对象才能成为一个类的名副其实的实例。⑤析构函数可以是虚函数,而且通常说明为虚函数。说明虚函数的目的在于;使用delete运算符删除一个对象时,能确保析构函数被正确地执行。这是因为设置虚析构函数后,可以利用动态联编方式选择析构函数。⑥一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。


下列函数中,( )是对文件进行写操作的。

A.get()

B.read()

C.seekg()

D.put()


正确答案:D


关于纯虚函数和抽象类的描述中,( )是错误的。

A.纯虚函数是一种特殊的虚函数,它没有具体的定义

B.抽象类是指具有纯虚函数的类

C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类

D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出


正确答案:C

更多 “东师C++程序设计20春在线作业1答案” 相关考题
考题 虚函数是一种()成员函数。说明方法是在函数名前加关键字()。虚函数具有()性,在基类中被说明的虚函数,具有相同说明的函数在派生类中自然是虚函数。正确答案:非静态; virtual;继承

考题 下列关于虚函数的描述中,正确的是( )。A.虚函数是一个static类型的成员函数B.虚函数是一个非成员函数C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型正确答案:C

考题 下面关于构造函数和析构函数的描述,错误的是( )。A)析构函数中调用虚函数采用静态联编B)对虚析构函数的调用可以采用动态联编C)当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数D)构造函数可以声明为虚函数正确答案:D

考题 下列关于虚函数的描述中,正确的是( )。A.如果在重定义函数时使用了保留字virtual,则该重定义函数仍然是虚函数B.虚函数不得声明为静态函数C.虚函数不得声明为另一个类的友元函数D.派生类必须重新定义基类的虚函数正确答案:B解析:被关键词virtual说明的函数称为虚函数。对于虚函数有以下限制: ①只有类的成员函数才能说明为虚函数。这是因为,虚函数仅适用于有继承关系的类对象,所以普通函数不能说明为虚函数。 ②静态成员函数不能是虚函数,因为静态成员函数不受限于某个对象。 ③内联函数不能是虚函数,因为内联函数是不能在运行中动态确定其位置。即使虚函数在类的内部定义,编译时仍将其看作是非内联的。 ④构造函数不能是虚函数,因为构造时对象还是一片未定型的空间。只有在构造完成后,对象才能成为一个类的名副其实的实例。 、 ⑤析构函数可以是虚函数,而且通常说明为虚函数。说明虚函数的目的在于:使用 delete运算符删除一个对象时,能确保析构函数被正确地执行。这是因为设置虚析构函数后,可以利用动态联编方式选择析构函数。 ⑥一般要求基类中说明了虚函数后,派生类说明的虚函数应该与基类中虚函数的参数个数相等,对应参数的类型相同。如果不相同,则将派生类虚函数的参数类型强制转换为基类中虚函数的参数类型。

考题 下面关于虚函数的描述中正确的是( )。A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型正确答案:D

考题 单选题关于虚函数的描述中,正确的是()。A 虚函数是一个静态成员函数B 虚函数是一个非成员函数C 虚函数即可以在函数说明定义,也可以在函数实现时定义D 派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型正确答案:D解析:暂无解析

考题 下面关于构造函数和析构函数的描述,错误的是( )。A.析构函数中调用虚函数采用静态联编B.对虚析构函数的调用可以采用动态联编C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数D.构造函数可以声明为虚函数正确答案:D

考题 关于虚函数的描述中,正确的是( )。A.虚函数是一个静态成员函数B.虚函数是一个非成员函数C.虚函数既可以在函数说明时定义,也可以在函数实现时定义D.派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型正确答案:D

考题 单选题下列关于虚函数的描述中,正确的是(  )。A 虚函数是一个static类型的成员函数B 虚函数是一个非成员函数C 基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明D 派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型正确答案:C解析:在成员函数声明的前面加上virtual修饰,即把该函数声明为虚函数。虚函数只能是类中的一个成员函数,但不能是静态成员函数。在派生类中重新定义虚函数时必须有相同的函数类型,包括函数的返回类型、函数名、参数个数、参数类型的顺序必须相同。

考题 要实现多态性,派生类中的虚函数必须( )。A.函数名、参数及返回值必须与基类中对应的虚函数完全相同B.参数个数不必与基类中对应的虚函数的函数名完全相同C.参数类型不必与基类中对应的虚函数的函数名完全相同D.返回值类型不必与基类中对应的虚函数的函数名完全相同正确答案:A解析:函数名、参数及返回值必须与基类中对应的虚函数完全相同。