《面向对象程序设计》复习题docx.docx
- 文档编号:28830820
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:15
- 大小:80.35KB
《面向对象程序设计》复习题docx.docx
《《面向对象程序设计》复习题docx.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》复习题docx.docx(15页珍藏版)》请在冰豆网上搜索。
《面向对象程序设计》复习题docx
一、选择题
1、下列各项中,()不是面向对象程序设计方法的特点。
A.继承性B.健壮性
C.封装性D.多态性
2、下列有关类和对象的叙述中,正确的是(b
A.类和对象是同义词
B.类的声明中不能省略用于初始化对象的构造函数
C.对象可以作为函数的参数,也可以由函数返回
D.同类的对象之间构造可以不同
3、类中的私有数据指的是(b
A.访问该数据时,必须确认口令
B.该数据经过加密处理,访问时需解密
C.封装于函数内部且不能直接访问的数据
D.封装于对象内部且不能直接访问的数据
4、构造函数的功能是(b
A.初始化新建立的对象
B.用已有对象初始化新建对象
C.为对象的所有成员分配存储空间
D.为数据成员分配存储空间
5、拷贝构造函数的功能是(b
A.用已知对象初始化另一个对象
B.用对象调用成员函数
C.为数据成员重新分配存储空间
D.用其它类型的数据初始化对象
6、下列关于运算符重载的叙述中,正确的是(卜
A.所有的单目运算符都不能被重载
B.运算符被重载后,其原有的优先级与结合性不变
C.需要时,可以自定义一个新的运算符来进行重载
D.运算符都可以用成员函数和友元函数两种形式重载
7、有如下类的声明:
classoneType
{private:
inta;
protected:
intb;
public:
intc;
};
已知x是oncTypc类的对象,下列语句中,()是正确的。
A.x.a=();
C.x.c=0;
B.x.b=();
D.T:
:
a=0;
8、以下不能声明为虚函数的是(
b
A.成员函数
B.派生类的成员函数
C.静态成员函数
D.析构函数
9、下列情形中不可以重载同名函数的是(b
A.参数个数不同
B.对应的参数类型应不同
C.满足A或B
D.参数的个数和对应类型相同
10、以下程序段的作用是动态建立一个(\
int**p;p=newint*[3];
for(intj=0;j<3;j++)p[j]=newint[4J;
A.4行3列的二维数组
B.3行4列的二维数组
C.大小为12的一维指针数组
D.地址连续的3行4列的二维数组
11、有如下参数形式的函数定义,这表示()0
voidfun(constT&a)//T是已声明和定义的类
A.a是常量对象
B.函数以常量对象a的地址作为参数
C.a引用T类的对象作为参数
D.a常量引用T类的对象作为参数
12、下列程序段的运行结果是(b
inta=l;
int&b=a;
a++;b++;cout«a«""«b< A.23B.22 C.32D.33 13、下列程序的运行结果是()o #include voidfun(int&a,intb,int*c) {a+=b;b++;*c=0; } voidmain() {intx=1,y=2,z=3; fun(x,y,&z);coutvvxvv””< } A.330B.123 C.320D.I33 14、运行下列程序段后,主函数(b classT {intnum; public: T(intn=0){num=n;} }; voidmain() {Tt[6J; } A.建立对象t,并初始化数据成员num为0 B. num为0 num为6 建立对象t,并初始化数据成员num为6 C.建立对象数组t,它由6个T对象组成,并初始化数据成员 D.建立对象数组t,它由6个T对象组成,并初始化数据成员 15、下列程序段表明(b classT {intnum; public: T(){num=0;} T(intn=l()){num=n;} }; voidmain() {Ta; } A.主函数建立对象a,但不进行num的初始化 B.主函数建立对象a,并初始化数据成员num为10 C.主函数建立对象a,并初始化数据成员num为0 D.由于构造函数的歧义性,编译时岀错 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的语句是(b A.ptr->setn(23);B.*ptr.setn(23); C.ptr->n=23;D.ptr->A(23); 18、下列程序的运行结果是()o #include classT {staticintnumber; intvalue; public: T(intv=0){number++;value=v;} 〜T(){number-;) voiddisplay(); }; voidT: : display() {cout«number«Mu«value«endl;} intT: : number=0; voidmain() {Tal,a2(l); al.displayO; a2.display(); T*p=newT(10); p->display(); deletep; al.displayO; 19.下列程序的运行结果是(' 20.下列程序的运行结果是(b #include #includc {doublerealjmag; public: Complex(doubler,doublei){real=r;imag=i}; operatordoublc(){rcturn(sqrt(rcal*rcal+imag*imag));} voidmain() {Complexc(3.0,4.0); doubler=c; cout«r«endl; I A.3B.4C.5D.3+4口 21、已知A类是B类的友元,B类是C类的友元,下列情形中错误的是(b A.B类的成员函数中,访问B类的私有成员 B.C类的成员函数中,访问C类的私有成员 C.A类的成员函数中,通过B类对象访问B类的私有成员 D.A类的成员函数中,通过C类对象访问C类的私有成员 22、下列情形中,属于多态性的是(b A.一个对象调用不同名称的函数 B.一个对象调用相同名称的函数 C.不同的对象调用不同名称的函数 D.不同的对象调用相同名称的函数 23、已知抽象类S派生出T类,下列对象定义中,错误的是(b A.Tb;B.T*pbC.Sa;D.S*pa; 24、下列程序的执行结果是(L #include classA_type {public: A_type(){cout«MinitializingA_typeobjectE;) 〜A_type(){cout«^destroyingA_typeobjecl'n";} }; classB_type: publicA_type {public: B_type(){cout«^initializingB_typeobjeciE;} 〜B_type(){cout«^destroyingB_typeobject\n^;} }; voidmain() {B_type*pb=newB_type;deletepb; } B.initializingA_typeobjectinitializingB_typeobjectdestroyingB_typeobjectdestroyingA_typeobject D.initializingA_typeobjectinitializingB_typeobjectdestroyingA_typeobjectdestroyingB_typeobject A.initializingB_typeobjectdestroyingB_typeobject C.initializingB_typeobjectinitializingA_typeobjectdestroyingA_typeobjectdestroyingB_typeobject 二、填空题 1、面向对象程序设计中的多态性包括由函数重载实现的和由虚函数实现 的O 2、当一个对象建立时,隐含着对的一次调用;而当一个对象被删除时, 隐含着对的一次调用。 3、C++中运算符的重载可以通过函数和函数来实现。 4、填写适当语句,完成下列tabic类的构造函数、拷贝构造函数和析构函数。 classtable {char*namc; intlen; public: table(char*ps二NULL) {if(ps) {lcn=strlcn(ps); ■ y strcpy(nam.ps); } else {lcn=0;namc=;} } table(consttable&t) { if(t.name) name=newchar[len+l]; strcpy(name.t.name); } else {name=NULL;len=0;} } 〜(ablc() {if(len); } }; 5、填写适当语句,实现一个用于对数组进行选择排序、元素查找、求元素总和的类模板。 数组元素 是某种数值类型。 #include { T*data; intnum; public: array(T*d,intn){data=d;num=n;} -array(){) voidsort();//选择排序 intscck(Tkey);//查找并返回元素key在数组中的下标 Tsum();//计算并返回元素总和 }; voidarray: : sort() {intj,k,m; for(j=0;j {m=j; for(k=j+l;kvnum;k++)讦(datalkj if(m! =j) {temp=data[j];datafj]=data[m];data[m]=temp;) } } } intarray: : seek(Tkey) {intj for(j=0;j return-1; Tarray: : sum() {Ts=0; intj; for(j=0;j returns; } 三、改错题 1、指出以下类的声明和定义中的错误,并更正。 classT {intnum=0; public: voidT(inta){num=a;} 〜T(){cout«^^Bye! \n,^) voidsctNum(); } voidsetNum() {cout«9,Inputanumber: ”;cin»num;} 2、指出以下类的声明和定义中的错误,并更正。 #includc classTest {staticintx; public: virtualstaticintfunc(); }; intx=100; intfunc(){returnx;} voidmain() {cout«Test: : func()«endl; Testa(l); cout«a.func(); } 3、指岀以下类的声明和定义中的错误,并更正。 classA { inta; public: A(intx){a=x;) showAQ{cout«rta=n«a«endl;} }; classB: publicA; {intb; public: B(inty): A(intx){b=y;} voidsetData(intx,inty) {a=x;b=y;} voidshowB(){showA();cout< }; 四、应用题 1、有如下2个类的声明定义: classA {intn; public: intFun(constB&b); }; classB {intn; public: //其它成员声明 }; intA: : Fun(constB&b) {return(n+b.n);} 若希望A类的成员函数Fun()中能访问B类对象的私有成员,应作如何改进? 2、有如下基类A_typc和派生类B_typc的声明: classA_type {char*s; public: A_type(intlength)! s=newchar[length+IJ;} ~A_type(){delete[]s;) }; classB_type: publicA_type {int*p; public: B_type(intsize){p=newint[size];) ~B_type(){deleteTip;) }; 则下列程序段: A_type*q=newB_type(128); deleteq; 其中,deleteq语句调用的是哪个类的析构函数? 试改进析构函数的声明。 五、设计题 1、自定义一个描述字符串的类,其中通过对>>、«.+等运算符的重载实现字符串的输入、输出和连接操作。 2、定义一个描述平面几何形状的抽象类,其中含有一个计算面积的纯虚函数,并有此抽象类派生出描述圆、矩形和三角形的类。 3、定义一个Employee类,其中有描述姓名、地址和邮编的数据成员,类中有用于初始化数据成员的构造函数、修改地址和邮编、修改姓名和显示对象信息的函数成员。 4、运用文件流编写一个实现文件拷贝的程序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向对象程序设计 面向 对象 程序设计 复习题 docx