C/C++测试题面向对象(二)继承和派生33、C++中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过________,派生出新的类。A复用B继承C单继承D多继承//答案:B34、继承具有_______,即当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员。A规律性B传递性C重复性D多样性//答案:B35、派生可以分为①________和②_________。由②________得到的派生类,其基类的所有公有成员都只能成为它的私有成员,这些私有成员只能被派生类的成员函数访问,而③________无权访问;①________的意义是基类中所有公有成员在派生类中也都是公有的。A公有派生B派生类的使用者C私有派生D派生类的构造函数//答案:①A②C③B36、基类的①________不能为派生类的成员访问,基类的②_______在派生类中的性质和继承的性质一样,而基类的③_______在私有继承时在派生类中成为私有成员函数,在公有和保护继承时在派生类中仍为保护成员函数A公有成员B私有成员C私有成员函数D公有成员函数//答案:①B②A③D37、子类的数据成员和成员函数除了有从父类继承而来的外,还有:A子类不能拥有自己的数据成员和成员函数B子类可以新添自己的数据成员,但成员函数只能从父类继承C子类可以新添自己的成员函数,但数据成员只能从父类继承D子类可以拥有自己独特的数据成员和成员函数//答案:D38、在构造一个类的对象时,如果该类是从另一个类继承的,则构造函数的调用顺序是A同类的继承关系无关B先调用父类的构造函数,然后调用本类的构造函数C先调用本类的构造函数,然后调用父类的构造函数D不用调用构造函数//答案:B39、在析构一个类的对象时,如果该类是从另一个类继承的,则析构函数的调用顺序是A同类的继承关系无关B先调用父类的析构函数,然后调用本类的析构函数C先调用本类的析构函数,然后调用父类的析构函数D不用调用析构函数//答案:C重载、多态和虚函数40、下列运算符中,________运算符在C++中不能重载。A?:B+C–D=//答案:A41、下列运算符中,________运算符在C++中不能重载。A&&B[]C::Dnew//答案:C42、如果一个类至少有一个纯虚函数,那么就称该类为________。A抽象类B虚基类C派生类D以上都不是//答案:A43、下列描述中,________是抽象类的特性。A可以说明虚函数B可以进行构造函数重载C可以定义友元函数D不能说明其对象//答案:D44、关于动态联编的下列描述中,________是错误的。A动态联编是以虚函数为基础的B动态联编是在运行时确定所调用的函数代码的C动态联编调用函数操作是指向对象的指针或对象引用D动态联编是在编译时确定操作函数的//答案:D45、关于虚拟成员函数,以下叙述正确的是________A析构函数同构造函数一样,不能是虚拟的B在一个类中被定义为虚拟的成员函数,其所有的派生类中相同的成员函数都是虚拟的C带有虚拟函数的类不能直接生成对象,只有其子类才能生成对象D虚拟成员函数同普通成员函数不同,不能调用父类的虚拟成员函数//答案:B46、关于虚函数的描述中,是正确的A虚函数是一个static类型的成员函数B虚函数是一个非成员函数C基类中说明了虚函数后,派生类中与其对应的函数可不必说明为虚函数D派生类的虚函数与基类的虚函数具有不同的参数个数和类型//答案:C填空题:C++概述47、写出除class,private,protected,public之外的任意五个C++新增的关键字、、、、。参考//答案:catch,,const,delete,friend,new,operator,template,this,throw,try,virtual48、_____________是指一种事物保留了另一种事物的全部特征,并且有自身的独有特征。//答案:继承49、C++语言中使用函数重载、模板、__________等概念来支持多态性。//答案:虚函数50、在C++中有两种类型的注释,一种是C语言中使用的注释符(/*···*/),另一种是______。//答案://51、在C++类中可以包含_______、_____和______三种具有不同访问控制权的成员。//答案:public、protected、private类和对象52、类中的数据和成员函数默认类型为_________。//答案:私有53、任何类中允许有三种权限的数据成员、、。//答案:publicprivateprotected54、静态数据成员在定义或说明时前面要加上关键字。//答案:static55、以下程序运行的结果_________。#include“iostream.h”classCSample{private:inti;public:CSample();CSample(intval);voidDisplay();~CSample();};CSample::CSample(){cout“Constructor1”endl;i=0;}CSample::CSample(intval){cout“Constructor2”endl;i=val;}voidCSample::Display(){cout”i=”iendl;}CSample::~CSample(){cout“Destructor”endl;}voidmain(){CSamplea,b(10);a.Display();b.Display();}//答案:Constructor1Constructor2i=0i=10DestructorDestructor56、以下程序执行的结果是_____________________。#includeiostream.hclassB{intx,y;public:B(){x=y=0;cout“Constructor1”endl;}B(inti){x=i;y=0;cout“Constructor2”endl;}B(inti,intj){x=i;y=j;cout“Constructor3”endl;}~B(){cout“Destructor”endl;}voidprint(){cout“x=”x“,y=”yendl;}};voidmain(){B*ptr;ptr=newB[3];ptr[0]=B();ptr[1]=B(5);ptr[2]=B(2,3);for(inti=0;i3;i++)ptr[i].print();delete[]ptr;}//答案:Constructor1Constructor1Constructor1Constructor1DestructorConstructor2DestructorConstructor3Destructorx=0,y=0x=5,y=0x=2,y=3DestructorDestructorDestructor57、以下程序执行的结果是_____________________。classB{intx,y;public:B(){x=y=0;coutConstructor1endl;}B(inti){x=i;y=0;coutConstructor2endl;}B(inti,intj){x=i;y=j;coutConstructor3endl;}~B(){coutDestructorendl;}voidprint(){coutx=x,y=yendl;}};voidmain(){B*ptr;ptr=newB[2];ptr[0]=B();ptr[1]=B(5);delete[]ptr;}//答案:Constructor1Constructor1Constructor1DestructorConstructor2DestructorDestructorDestructor58、以下程序执行结果是_____________。#includeiostream.hclassA{public:A(inti=0){m=i;coutConstructormendl;}voidset(inti){m=i;}voidprint()const{coutmendl;}~A(){coutDestructormendl;}private:intm;};voidfun(constA&c){c.print();}voidmain(){fun(5);}//答案:Constructor55Destructor5继承和派生59、以下程序执行结果是________________。#includeiostream.hclassA{public:A(inti,intj){a=i;b=j;}voidmove(intx,inty){a+=x;b+=y;}voidshow(){cout“(“a“,”b“)”endl;}private:inta,b;};classB:privateA{public:B(inti,intj,intk,intl):A(i,j){x=k;y=l;}voidshow(){coutx“,”yendl;}voidfun(){move(3,5);}voidf1(){A::show();}private:intx,y;};voidmain(){Ae(1,2);e.show();Bd(3,4,5,6);d.fun();d.show();d.f1();}//答案:(1,2)5,6(6,9)voidmain(){Ae(1,2);e.show();Bd(3,4,5,6);d.fun();d.A::show();d.B::show();d.f1();}//答案:(1,2)(6,9)5,6(6,9)60、以下程序执行结果是________________#includeiostream.hclassA{inta;public:A(intaa=0){a=aa;}~A(){coutDestructorA!aendl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;}~B(){coutDestructorB!bendl;}};voidmain(){Bx(5),y(6,7);//后定义的变量将先被释放}//答案:DestructorB!7DestructorA!6DestructorB!0DestructorA!5重载多态和虚函数61、以下程序执行结果是________________。#includeiostream.hclassbase{public:base(){cout“构造base子对象”endl;f();}virtualvoidf(){cout“调用base::f()”endl;}};classderived:publicbase{public:derived(){cout“构造derived对象”endl;f();}voidf(){cout“调用derived::f()”endl;}};voidmain(){derivedd;}//答案:构造base子对象调用base::f()构造derived对象调用derived::f()62、以下程序执行结果是________________。#includeiostream.hclassbase{public:base(){cout“Constructorbasesubobject”endl;f();}virtualvoidf(){cout“Callbase::f()”endl;}};classderived:publicbase{public:deri