您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C--面向对象程序设计模拟试题六
C++面向对象程序设计模拟试题六一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选或未选均无分。1.类的析构函数的作用是(d)。A)作为类的一般成员函数B)类的初始化C)对象的初始化D)对象的删除2.一个类的友元函数或友元类可以访问该类的(d)。A)私有成员B)保护成员C)公有成员D)所有成员3.下列关于成员函数特征的描述中,(a)是错误的。A)成员函数一定是内联函数B)成员函数可以重载C)成员函数可以设置参数的默认值D)成员函数可以是静态的4.下列函数中,(c)不是类的成员函数。A)构造函数B)析构函数C)友元函数D)拷贝构造函数5.下列对派生类的描述中,(d)是错误的。A)一个派生类可以作为另一个派生类的基类B)派生类至少有一个基类C)派生类的成员除了它自己的成员外,还包含了它的基类的成员D)派生类中继承的基类成员的访问权限到派生类中保持不变6.下列的描述中,(b)是错误的。A)公有继承时基类中的public成员在派生类中仍是public的B)公有继承时基类中的private成员在派生类中仍是private的C)公有继承时基类中的protected成员在派生类中仍是protected的D)私有继承时基类中的public成员在派生类中仍是private的7.下列虚基类的声明中正确的是(d)。A)classvirtualB:publicAB)virtualclassB:publicAC)classB:publicAvirtualD)classB:virtualpublicA8.若类A和类B的定义如下:classA{inti,j;public:A(intm,intn):i(m),j(n){}intGeti(){returni;}};classB:publicA{intk;public:B(intm,intn,intu):A(m,n),k(u){}voidMake(){k=i*j;}};intmain(){Bb(1,2,3);return0;}则上述定义中,()是非法的表达式.A)k=i*j;B)intk;C)returni;D)voidMake()9.若有以下程序:#includeiostreamusingnamespacestd;classA{public:inta;A(){a=10;}};classA1:publicA1.{public:A1(){a=a+1;}\};classA2:publicA{public:A2(){a=a+2;}};classB:publicA1,publicA2{public:B(){}voidPrint(){coutaendl;}};intmain(){Bobj;obj.Print();return0;}则程序运行后的输出结果为:A)产生语法错误B)13C)12D)1010.在下面的4个关键字中,(a)是用来说明虚函数的。A)virtualB)publicC)protectedD)private11.实现运行时的多态要使用(d)。A)重载函数B)析构函数C)构造函数D)虚函数12.如果一个类至少有一个纯虚函数,那么该类称为(a)。A)抽象类B)虚基类C)派生类D)以上都不对13.cin是某个类的标准对象,该类是(b)。A)ostreamB)istreamC)stdoutD)stdin14.调用一个成员函数时,使用动态联编的情况是(b)。A)通过对象调用一虚函数B)通过指针或引用调用一虚函数C)通过对象调用一静态函数D)通过指针或引用调用一静态函数15.假定CTest为一个类,并且有一无默认值的有参构造函数和一无参构造函数,则执行“CTestobjTest;”语句时将自动调用该类的(b)。A)有参构造函数B)无参构造函数C)拷贝构造函数D)赋值重载函数二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。1.在用class定义一个类时,数椐成员和成员函数默认的访问权限是public。2.若类Y是类X的私有派生类,类Z是类Y的公有派生类,则类Z不能访向类X的公有成员和保护成员。3.C++中设置虚基类的目的是实现运行时的多态。4.模板类与类模板的意义完全相同。5.只有常成员函数才可以操作常对象。三、填空题(本大题共5小题,每小题2分,共10分)将正确的答案写在每小题的空格内,错填或不填均无分。1.类的具体表现是通过创建来操作的。2.假定AB为一个类,则执行“ABa[10];”语句时,系统自动调用该类的构造函数的次数为。3.使用函数模板的方法是先说明函数模板,然后实例化成相应的进行调用执行。4.拷贝构造函数用它所在类的作为参数。5.重载运算符“”的函数名为。四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。1.若有以下程序:#includeiostream.hclassA{inta;public:A(intaa=0){a=aa;coutA():aendl;}};classB:publicA{intb;public:B(intaa=0,intbb=0):A(aa){b=bb;coutB():bendl;}};intmain(){Bx(5),y(6,7);return0;}输出结果为:2.若有以下程序:#includeiostream.hclassPoint{intx,y;public:Point(intm=0,intn=0){x=m;y=n;}voidShow(){coutx=x,y=yendl;}};intmain(){Point*p=newPoint(1,68);p-Show();deletep;return0;}输出结果为:3.若有以下程序:#includeiostream.hclassSample{intn;public:Sample(inti){n=i;s+=n;}staticints;voidShow(){coutsendl;}};intSample::s=0;intmain(){Samplea(2),b(5),c(8);c.Show();return0;}输出结果为:4.若有以下程序:#includeiostream.hclassSample{intn;public:Sample(inti){n=i;}voidPrint(){cout1:n=n,;}voidPrint()const{cout2:n=nendl;}};intmain(){Samplea(10);constSampleb(20);a.Print();b.Print();return0;}输出结果为:5.若有以下程序:#includeiostream.hclassTest{intx;public:voidSetx(inti){x=i;}intPutx(){returnx;}};intmain(){Test*p;Testa[3];a[0].Setx(5);a[1].Setx(6);a[2].Setx(7);for(intj=0;j3;j++){p=&a[j];coutp-Putx(),;}coutendl;return0;}输出结果为:6.若有以下程序:#includeiostream.hclassBase{public:Base(intx){a=x;}voidShow(){coutaendl;}private:inta;};classDerived:publicBase{public:Derived(inti):Base(i+1),b(i){}voidShow(){coutbendl;}private:intb;};intmain(){Baseb(5),*pb;Derivedd(1);pb=&d;pb-Show();return0;}输出结果为:7.若有以下程序:#includeiostream.hclassBase{public:voidFun(){cout1endl;}};classDerived:publicBase{public:voidFun(){cout2endl;}};intmain(){Deriveda;Base*p;p=&a;(*p).Fun();a.Fun();return0;}输出结果为:8.下列程序的输出结果为#includeiostream.htemplatetypenameTTclassFF{TTa1,a2,a3;public:FF(TTb1,TTb2,TTb3){a1=b1;a2=b2;a3=b3;}TTSum(){returna1+a2+a3;}};intmain(){FFintx(2,3,4),y(5,7,9);coutx.Sum()''y.Sum()endl;return0;}输出结果为:六、编程题(本大题共2小题,每小题10分,共20分)1.设计一个类Rect,要求如下:(1)该类中的私有数据成员length,width存放它的长和宽,并且设置它们的默认值是0。(2)通过成员函数设置其长和宽,并确保长和宽都在(0,50)范围之内。(3)实现求周长函数GetPerimeter()。2.定义一个二维座标类Vector2d,二个数据成员为double型x,y为private属性。定义代二个参数的构造函数和一个Show()函数用以输出x,y的值,另外作为成员函数重载的运算苻”+”的功能是将此类二个对象的数据成员x和y对应相加。这些成员函数的属性均为public.请用C++编写此程序,并编写测试程序进行测试C++面向对象程序设计模拟试题六参考答案一、单项选择题(本大题共15小题,每小题2分,共30分)在每小题列出的四个备选项中,只有一个是苻合题目要求的。请将其代码填写在题后的括号内。错选,多选或未选均无分。1.D)2.D)3.A)4.C)5.D)6.B)7.D)8.A)9.A)10.A).11.D)12.A)13.B)14.B)15.B)二、判断正误题(本大题共5小题,每小题2分,共10分)判断正误,在题后的括号内,正确的划上“√”错误的划上”×”。1.参考答案:“×”2.参考答案:“×”3.参考答案:“√”4.参考答案:“×”5.参考答案:“√”三、填空题(本大题共5小题,每小题2分,共10分)不写解题过程,将正确的答案写在每小题的空格内,错填或不填均无分1.参考答案:对象2.参考答案:103.参考答案:模板函数4.参考答案:引用5.参考答案:operator四、程序分析题(本大题共8小题,每小题3分,共24分)给出下面各程序的输出结果。1.输出结果为:A():5B():0A():6B():72.输出结果为:x=1,y=683.输出结果为:154.输出结果为:1:n=10,2:n=205.输出结果为:5,6,76.程序的输出结果为:27.程序的输出结果为:128.程序的输出结果为:921六、编程题(本大题共2小题,每小题10分,共20分)1.参考程序:#includeiostreamusingnamespacestd;classRect{private:doublelength,width;public:Rect(doublel=0,doublew=0):length(l),width(w){}voidSet(doublel,doublew){if(length=0||length=50||width=0||width=50)throw数据不在指定范围(0,50)!;//抛出异常length=l;width=w;}doubleGetPerimeter(){return2*(length+width);}};intmain(){try//检查异常{Rectobj(1,8);cout
本文标题:C--面向对象程序设计模拟试题六
链接地址:https://www.777doc.com/doc-7296691 .html