下列关于构造函数和析构函数的描述,错误的是( )。
A.析构函数中调用虚函数采用静态联编
B.对虚析构函数的调用可以采用动态联编
C.当基类的析构函数是虚函数时,其派生类的析构函数也一定是虚函数
D.构造函数可以声明为虚函数
当一个成员函数被声明为虚函数后,其派生类中的具有相同参数类型和相同参数个数类型的相同类型的同名函数也是虚函数。()
在派生类中重新定义虚函数时,除了(),其它方面都必须与基类中相应的虚函数保持一致。
A、参数个数
B、参数类型
C、函数体
D、函数名称
下面关于虚函数的描述,错误的是( )。
A.在成员函数声明的前面加上virtual修饰,就可把该函数声明为虚函数
B.基类中说明了虚函数后,派生类中对应的函数也必须说明为虚数
C.虚函数可以是另一个类的友元函数,但不能是静态成员函数
D.基类中说明的纯虚函数在其任何派生类中都必须实现
下列关于纯虚函数的描述中,正确的是( )。
A.纯虚函数是没有给出实现版本(即无函数体定义)的虚函数
B.纯虚函数的声明总是以“=0;”结束
C.派生类必须实现基类的纯虚函数
D.含有纯虚函数的类不能是派生类
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类型的成员函数
B.虚函数是一个非成员函数
C.基类中采用virtual说明一个虚函数后,派生类中定义相同原型的函数时可不必加virtual说明
D.派生类中的虚函数与基类中相同原型的虚函数具有不同的参数个数或类型
下列关于虚函数的说法中,正确的是( )。
A.如果在重定义虚函数时使用了保留字virtual,则该重定义函数仍然是虚函数
B.虚函数不得声明为静态函数
C.虚函数不得声明为另一个类的私有函数
D.派生类必须重新定义基类的虚函数
下列函数中,( )是对文件进行写操作的。
A.get()
B.read()
C.seekg()
D.put()
关于纯虚函数和抽象类的描述中,( )是错误的。
A.纯虚函数是一种特殊的虚函数,它没有具体的定义
B.抽象类是指具有纯虚函数的类
C.一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类
D.抽象类只能作为基类来使用,其纯虚函数的定义由派生类给出