您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 《面向对象程序设计》复习题
一、选择题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、有如下类的声明:classoneType{private:inta;protected:intb;public:intc;};已知x是oneType类的对象,下列语句中,()是正确的。A.x.a=0;B.x.b=0;C.x.c=0;D.T::a=0;8、以下不能声明为虚函数的是()。A.成员函数B.派生类的成员函数C.静态成员函数D.析构函数9、下列情形中不可以重载同名函数的是()。A.参数个数不同B.对应的参数类型应不同C.满足A或BD.参数的个数和对应类型相同10、以下程序段的作用是动态建立一个()。int**p;p=newint*[3];for(intj=0;j3;j++)p[j]=newint[4];A.4行3列的二维数组B.3行4列的二维数组C.大小为12的一维指针数组D.地址连续的3行4列的二维数组11、有如下参数形式的函数定义,这表示()。voidfun(constT&a)//T是已声明和定义的类{......}A.a是常量对象B.函数以常量对象a的地址作为参数C.a引用T类的对象作为参数D.a常量引用T类的对象作为参数12、下列程序段的运行结果是()。inta=1;int&b=a;a++;b++;coutabendl;A.23B.22C.32D.3313、下列程序的运行结果是()。#includeiostream.hvoidfun(int&a,intb,int*c){a+=b;b++;*c=0;}voidmain(){intx=1,y=2,z=3;fun(x,y,&z);coutxy””zendl;}A.330B.123C.320D.13314、运行下列程序段后,主函数()。classT{intnum;public:T(intn=0){num=n;}};voidmain(){Tt[6];……}A.建立对象t,并初始化数据成员num为0B.建立对象t,并初始化数据成员num为6C.建立对象数组t,它由6个T对象组成,并初始化数据成员num为0D.建立对象数组t,它由6个T对象组成,并初始化数据成员num为615、下列程序段表明()。classT{intnum;public:T(){num=0;}T(intn=10){num=n;}};voidmain(){Ta;……}A.主函数建立对象a,但不进行num的初始化B.主函数建立对象a,并初始化数据成员num为10C.主函数建立对象a,并初始化数据成员num为0D.由于构造函数的歧义性,编译时出错16、下列带缺省参数的函数声明中,()是正确的。A.voidF(inta=0;intb=0;intc);B.voidF(inta=0;intb;intc);C.voidF(inta=0;intb;intc=0);D.voidF(inta;intb=0;intc=0);17、A类和函数fun()定义如下:classA{intnum;public:voidsetn(intn){num=n};A(intx){num=x;}};intfun(){A*ptr=newA(15);...}函数fun()中,可将动态建立的对象的数据成员num的值赋为23的语句是()。A.ptr-setn(23);B.*ptr.setn(23);C.ptr-n=23;D.ptr-A(23);18、下列程序的运行结果是()。#includeiostream.hclassT{staticintnumber;intvalue;public:T(intv=0){number++;value=v;}~T(){number--;}voiddisplay();};voidT::display(){coutnumbervalueendl;}intT::number=0;voidmain(){Ta1,a2(1);a1.display();a2.display();T*p=newT(10);p-display();deletep;a1.display();}A.00B.10C.20D.3011202131010303103101020203019、下列程序的运行结果是()。#includeiostream.hclasssize{public:intwidth,height;size();size(int,int);sizemiddle(size);voiddisplay();};size::size(){width=0;height=0;}size::size(intw,inth){width=w;height=h;}sizesize::middle(constsize&a){sizeb;b.width=(width+a.width)/2;b.height=(height+a.height)/2;return(b);}voidsize::display(){coutwidth,heightendl;}voidmain(){sizex(100,60),y,z;z=x.middle(y);x.display();y.display();z.display();}A.100,60B.100,60C.100,60D.100,600,020,100,00,050,3060,35100,600,020、下列程序的运行结果是()。#includeiostream.h#includecmath.hclassComplex{doublereal,imag;public:Complex(doubler,doublei){real=r;imag=i};operatordouble(){return(sqrt(real*real+imag*imag));}};voidmain(){Complexc(3.0,4.0);doubler=c;coutrendl;}A.3B.4C.5D.3+4121、已知A类是B类的友元,B类是C类的友元,下列情形中错误的是()。A.B类的成员函数中,访问B类的私有成员B.C类的成员函数中,访问C类的私有成员C.A类的成员函数中,通过B类对象访问B类的私有成员D.A类的成员函数中,通过C类对象访问C类的私有成员22、下列情形中,属于多态性的是()。A.一个对象调用不同名称的函数B.一个对象调用相同名称的函数C.不同的对象调用不同名称的函数D.不同的对象调用相同名称的函数23、已知抽象类S派生出T类,下列对象定义中,错误的是()。A.Tb;B.T*pbC.Sa;D.S*pa;24、下列程序的执行结果是()。#includeiostream.hclassA_type{public:A_type(){cout”initializingA_typeobject\n”;}~A_type(){cout”destroyingA_typeobject\n”;}};classB_type:publicA_type{public:B_type(){cout”initializingB_typeobject\n”;}~B_type(){cout”destroyingB_typeobject\n”;}};voidmain(){B_type*pb=newB_type;deletepb;}A.initializingB_typeobjectB.initializingA_typeobjectdestroyingB_typeobjectinitializingB_typeobjectdestroyingB_typeobjectdestroyingA_typeobjectC.initializingB_typeobjectD.initializingA_typeobjectinitializingA_typeobjectinitializingB_typeobjectdestroyingA_typeobjectdestroyingA_typeobjectdestroyingB_typeobjectdestroyingB_typeobject二、填空题1、面向对象程序设计中的多态性包括由函数重载实现的和由虚函数实现的。2、当一个对象建立时,隐含着对的一次调用;而当一个对象被删除时,隐含着对的一次调用。3、C++中运算符的重载可以通过函数和函数来实现。4、填写适当语句,完成下列table类的构造函数、拷贝构造函数和析构函数。classtable{char*name;intlen;public:table(char*ps=NULL){if(ps){len=strlen(ps);;strcpy(name,ps);}else{len=0;name=;}}table(consttable&t){if(t.name){;name=newchar[len+1];strcpy(name,t.name);}else{name=NULL;len=0;}}~table(){if(len);}};5、填写适当语句,实现一个用于对数组进行选择排序、元素查找、求元素总和的类模板。数组元素是某种数值类型。#includeiostream.hclassarray{T*data;intnum;public:array(T*d,intn){data=d;num=n;}~array(){}voidsort();//选择排序intseek(Tkey);//查找并返回元素key在数组中的下标Tsum();//计算并返回元素总和};voidarray::sort(){intj,k,m;for(j=0;jnum-1;j++){m=j;for(k=j+1;knum;k++)if(data[k]data[j])if(m!=j){temp=data[j];data[j]=data[m];data[m]=temp;}}}}intarray::seek(Tkey){intjfor(j=0;jnum;j++)if(data[j]==key)return–1;}Tarray::sum(){Ts=0;intj;for(j=0;jnum;j++)returns;}三、改错题1、指出以下类的声明和定义中的错误,并更正。classT{intnum=0;public:voidT(inta){num=a;}~T(){cout”Bye!\n”}voidsetNum();}voidsetNum(){cout”Inputanumber:”;cinnum;}2、指出以下类的声明和定义中的错误,并更正。#includeiostream.hclassTest{staticintx;public:virtualstaticintfunc();};intx=100;intfunc(){returnx;}voidmain(){cout
本文标题:《面向对象程序设计》复习题
链接地址:https://www.777doc.com/doc-2805613 .html