如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
C++面向对象程序设计检测试题(三)抽象与多态班级:学号:姓名:一、选择题1.对定义重载函数的下列要求中,()是错误的。A、要求参数的个数不同B、要求参数中至少有一个类型不同C、要求参数的个数相同时,参数类型不同D、要求函数的返回值不同2、用虚函数只有在|()和()时才能实现多态性A、基类和派生类具有同名虚函数,而它们的参数个数不同B、用指向基类指针或基类对象的引用访问虚函数C、基类和派生类具有同名虚函数,而它们的参数至少有一个类型不同D、基类和派生类具有函数原型完全相同的同名虚函数,而函数体内的执行代码不同3、关于纯虚函数和抽象类的描述中,()是错误的A、纯虚函数是一种特殊的虚函数,它没有具体的实现部分B、抽象类是指具有纯虚函数的类C、一个基类中说明有纯虚函数,该基类的派生类一定不再是抽象类D、抽象类只能作为基类来使用,其纯虚函数的实现部分由派生类给出4.下列描述中,()是抽象类的特性A、可以说明虚函数B、可以进行构造函数重载C、可以定义友元函数D、不能说明其对象5、实现运行时的多态性要使用()A、重载函数B、构造函数C、析构函数D、虚函数6、对虚函数的调用()A、一定使用动态联编B、必须使用动态联编C、一定使用静态联编D、不一定使用动态联编7、在下面的程序中,A、B、C、D四句编译时出现错误的是()classA{//Apublic://BA(){func();}//Cvirtualvoidfunc()=0;}//D8、如果一个类至少有一个纯虚函数,那么就称该类为()A、抽象类B、虚基类C、派生类D、以上都不对二、写出程序的运行结果1、实现静态联编的程序#include<iostream.h>classShape{public:voidCalculateArea(){cout<<"TheShapeisAbstract\n";}};classRectangle:publicShape{public:Rectangle(doublel,doublew){L=l;W=w;}virtualvoidCalculateArea(){cout<<"TheRentangleareais"<<L*W<<endl;}private:doubleL,W;};classCircle:publicShape{public:Circle(doubler){R=r;}virtualvoidCalculateArea(){cout<<"TheCircleareais"<<3.14*R*R<<endl;}private:doubleR;};voidmain(){Shape*p;Rectanglerec(2.5,4.8);Circlecir(10);p=&rec;(*p).CalculateArea();p=○(*p).CalculateArea();}2、用虚函数实现多态性(动态联编)#include<iostream.h>classBase{public:virtualvoiddisplay(){cout<<"Baseclass\n";}};classDerive1:publicBase{public:virtualvoiddisplay(){cout<<"Drive1class\n";}};classDerive2:publicBase{public:virtualvoiddisplay(){cout<<"Drive2class\n";}};voidfn(Base&p){p.display();}voidmain(){Baseb;Derive1d1;Derive2d2;fn(b);fn(d1);fn(d2);}3、静态联编与动态联编相结合的程序#include<iostream.h>classBase{public:virtualvoidf1(){cout<<"f1functionofBase\n";}virtualvoidf2(){cout<<"f2functionofBase\n";}virtualvoidf3(){cout<<"f3functionofBase\n";}voidf4(){cout<<"f4functionofBase\n";}};classDerive:publicBase{public:virtualvoidf1(){cout<<"f1functionofDerive\n";}virtualvoidf2(intx){cout<<"f2functionofDerive\n";