面向对象1-期末考试试题及参考答案_第1页
面向对象1-期末考试试题及参考答案_第2页
面向对象1-期末考试试题及参考答案_第3页
面向对象1-期末考试试题及参考答案_第4页
面向对象1-期末考试试题及参考答案_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向对象程序设计(专科)复习题一一、单选题1.下列有关模板和继承的叙述,正确的是()。A、模板和继承都可以派生出一个类系B、从类系的成员看,模板类系的成员比继承类系的成员较为稳定C、从动态性能看,继承类系比模板类系具有更多的动态特性D、相同类模板的不同实例一般没有联系,而派生类各种类之间有兄弟父子等关系。2.有如下程序:#include<iostream>usingnamespacestd;inti=1;classFun{public:staticinti;intvalue(){returni–1;}intvalue()const{returni+1;}};intFun::i=2;intmain(){inti=3;Funfun1;constFunfun2;【】return0;}若程序的输出结果为:123则程序中下划线处遗漏的语句是()。()A、cout<<fun1.value()<<Fun::i<<fun2.value();B、cout<<Fun::i<<fun1.value()<<fun2.value();C、cout<<fun1.value()<<fun2.value()<<Fun::i;D、cout<<fun2.value()<<fun::i<<fun1.value();3.下面关于继承的描述中,错误的是()。A、公有继承时基类中的public成员在派生类中仍是public的B、公有继承时基类中的private成员在派生类中仍是private的C、公有继承时基类中的protected成员在派生类中仍是protected的D、私有继承时基类中的public成员在派生类中是private的4.实现运行时多态的机制是()。A、虚函数B、重载函数C、静态函数D、模板函数5.下列关于静态数据成员的描述中,正确的是()。A、类的不同对象有不同的静态数据成员B、静态数据成员不能通过类的对象访问C、静态数据成员是类的所有对象共享的D、类的每一个对象都有自己的静态数据成员6.下列关于new分配内存的用法,错误的是()()A、int*p=newint;B、char*pc=newchar(‘a’);C、int*pi=newint[10];D、char*pch=newchar[10](‘a’);7.下列关于bool类型的描述,错误的是()。A、bool类型是c++中的数据类型,C语言没有B、bool类型有两个值,真或假C、在算术和逻辑表达式里,bool都被转换为int类型的数据D、指针无法转换为bool类型8.下列关于派生类继承的描述的说法中,错误的是()A、一个派生类可以作为另一个派生类的基类B、派生类至少有一个基类C、派生类的缺省继承方式是privateD、派生类只含有基类的公有成员和保护成员9.下列关于纯虚函数描述中,错误的是()。A、纯虚函数没有具体的实现,只有声明B、纯虚函数的声明格式为:virtual函数返回值类型函数名(参数表)=0;C、纯虚函数后面的“=0”表示函数的返回值为0D、派生类如果没有全部实现基类的纯虚函数,则派生类为抽象类10.在重载一个运算符时,其参数表中没有任何参数,则下列描述中正确的是()A、作为友元函数重载的一元运算符B、作为成员函数重载的一元运算符C、作为友元函数重载的二元运算符D、作为成员函数重载的二元运算符11.下列函数参数默认值定义,错误的是()A、Fun(intx,inty=0)B、Fun(intx=100)C、Fun(intx=0,inty)D、Fun(intx=f(inta,intb))()12.下面有关重载函数的说法中,正确的是()。()A、重载函数必须具有不同的返回值类型B、重载函数形参个数必须不同C、重载函数必须有不同的形参列表D、重载函数名可以不同13.派生类的构造函数的成员初始化列表中,不能包含()。()A、基类的构造函数B、派生类中子对象的初始化C、基类中子对象的初始化D、派生类中一般数据成员的初始化14.下列关于抽象类的表述中,正确的是()。()A、没有函数成员的类称为抽象类B、含有虚函数成员的类称为抽象类C、含有纯虚函数成员的类称为抽象类D、用abstract修饰的类称为抽象类15.下面关于构造函数与析构函数的描述中,错误的是()。()A、构造函数定义了创建对象的方法,提供了初始化对象的一种简便手段B、析构函数完成对象被删除前的一些清理工作C、如果程序中未声明构造函数,则系统自动产生出一个缺省形式的构造函数D、析构函数允许重载,但析构函数不得返回任何值,即使关键字void也不允许16.有如下程序:#include<iostream>usingnamespacestd;classObj{staticinti;public:

Obj(){i++;}~Obj(){i--;}staticintgetValue(){returni;}};intObj::i=0;voidf(){Objob2;cout<<ob2.getValue();}

intmain(){Objob1;f();Obj*ob3=newObj;cout<<ob3->getValue();deleteob3;cout<<Obj::getValue();

return0;}程序的输出结果是()。A、232B、231C、222D、22117.下列关于虚基类的描述中,错误的是()。A、在多重继承中,若一个类声明为虚基类,则能保证一个派生类间接地多次继承该类时,派生类中只继承该基类的一份成员B、虚基类的定义形式是在派生类定义时基类名称前加virtual关键字C、类层次结构中最底层的派生类定义对象时完成虚基类的构造函数调用,该派生类的其他基类对虚基类的构造函数调用将被忽略D、通过对虚基类继承再派生出新类,则在定义新类对象时,虚基类中的成员排列在最前面18.下列关于虚析构函数描述中,错误的是()。A、如果基类析构函数不是虚析构函数,则只会调用基类的析构函数,派生类的析构函数不被调用,此时派生类中申请的资源不被回收B、如果基类析构函数为虚析构函数,则释放基类指针指向的对象时会调用基类及派生类析构函数,派生类对象中的所有资源被回收C、虚析构函数的声明方式为~virtual类名();D、虚析构函数的声明形式也是在析构函数名前使用virtual关键字19.下列关于string字符串的操作,错误的是()()A、string不像字符数组,不可以用[]来访问字符串中的元素B、可以直接用“+”运算符将两个string字符串连接C、可以直接用=来比较两个string字符串是否相等D、可以调用swap()函数来交换两个字符串内容20.下列关于iostream的描述中,错误的是()。()A、它是标准的C++头文件B、它与iostream.h是两个不同文件C、C++标准不再支持iostream.h文件D、iostream与iostream.h文件形式不同,但其内容实现是一样的二、判断题1.在声明一个对象时,C++编译器隐含地调用其构造函数。当对象退出其说明的作用域时,析构函数被隐含调用。A、正确B、错误()2.如果一个类拥有资源,比如开辟空间,当这个类的对象发生复制的时候,资源重新分配,需要进行深拷贝,反之,没有重新分配资源,只进行浅拷贝。A、正确B、错误()3.当我们在一个函数前面加上inline关键字,那么编译器在调用这个函数时,就会将其当做内联函数来调用。A对B错()4.静态数据成员只能用类名来调用,不可以用对象来调用。A正确B错误()5.类型转换函数也称为类型转换运算符重载函数,在函数名前面不能指定函数类型,函数也没有参数。A、正确B、错误()6.当派生类中出现与基类同名的函数时,派生类函数会将基类同名函数隐藏。A、正确B、错误()7.重载之后的运算符不能改变其优先级和结合性,但可以改变其操作数的个数及语法结构。A、正确B、错误()8.在断言中,如果表达式为真,则程序报告错误,并终止。()9.非类型模板参数对于在不同的模板实例中将拥有不同的值来满足不同的需求。()10.一个函数一旦定义成了内联函数,则在调用时就会将函数代码插入到调用处。A对B错()三、填空题1.观察程序,在下面括号内填入“相等”或“不相等”。#include<iostream>usingnamespacestd;intmain(void){inta,b;

cin>>a>>b;

boolc=(a==b);

if(c)cout<<"a与b_______"<<endl;

elsecout<<"a与b_______"<<endl;

return0;}2.当一个构造函数只有一个参数,而且该参数又不是本类的const引用时,这种构造函数称为_______。3.在MyClass类的定义中,对赋值运算符“=”进行重载。请将画线处缺失的部分补充完整_______MyClass::operator=(constMyClass&rhs){if(this==&rhs)return*this;value=rhs.value;return*this;}4.“[]”运算符重载函数有且只有_______参数,表示下标值,通常为整型。重载下标运算符时一般把返回值指定为一个引用。5.赋值运算符只能重载为类的_______。6.重载之后的运算符不能改变其_______和_______,也不能改变其操作数的个数及语法结构。7.C++中,运算符的操作对象只能是基本数据类型,若想操作用户自定义类型,如类或结构体,则需要通过_______来完成。8.重载为类的成员函数,运算的操作数会以_______或_______的形式表示。9.若运算符的操作数(尤其是第一个操作数)希望有隐式类型转换,则只能将该运算符重载为类的_______函数。10.dynamic_casta操作符一般用于对象的_______和_______的转换得分四、简答题1.利用函数重载的机制,编写一组重载函数voidsum():要求:1)分别能将两个整型数字相加;2)将两个浮点数数字相加;3)将两个字符串链接,最后输入结果。2.定义学生类Student:每个学生的信息包含有姓名(字符指针)和成绩(int类型),定义两个构造函数:1)定义带两个参数的构造函数,在构造函数中为保存姓名信息的字符指针开辟空间,并向空间中存入表示姓名的字符串。2)定义拷贝构造函数,完成深拷贝3)定义析构函数,释放资源编写程序,使用以上定义的三种函数。3.程序分析:#include<iostream>usingnamespacestd;inta[10]={1,2,3,4,5,6,7,8,9,10};

intfun(inti);

voidmain()

{

inti,s=0;

for(i=0;i<=10;i++)

{try

{

s=s+fun(i);

}

catch(int)

{

cout<<"数组下标越界!"<<endl;

}

}

cout<<"s="<<s<<endl;

system("pause");}

intfun(inti)

{

if(i>=10)

throwi;

returna[i];

}请写出运行结果:4.请阅读下面的程序,请在空白处填写正确的代码,以实现除零异常的重抛。#include<iostream>#include<string>usingnamespacestd;intint_div(inta,intb)

//实现整数相除的函数{

if(b==0){【】;}

returna/b;}voidexception_handler(intn1,intn2){

try{cout<<"Maybeexceptioncode:"<<endl;

cout<<n1<<"/"<<n2<<"="<<int_div(n1,n2)<<endl;

cout<<"intry,afterdiv!"<<endl;

}

catch(【】)

{

cout<<"exception:div"<<n<<"!"<<endl;thrown;

}}intmain(){

intint_n1,int_n2;

while(1){

cout<<"Pleaseinputtwointegers:";

cin>>int_n1>>int_n2;

try{【】;}

catch(int)

{cout<<"outtertry-catch!"<<endl;}}

return0;}面向对象程序设计复习题1(专科)答案一、单选题(每题1分,共计30分)1~5DABAC6~10DDDCB11~15CCCCD16~20DDCAD三、判断题(每题1分,共计15分)1.对2.对3.错4.错5.对6.对7.错8.错9.对10.错四、填空题(每题1分,共计15分)1.【相等】【不相等】2.【转换构造函数】3.【MyClass&】4.【一个】5.【成员函数】6.【优先级】【结合性】7.【运算符重载】8.【调用者】【参数】9.【友元】10.【指针】【引用】五、简答题(每题1分,共计40分)1.#include<iostream>#include<string>usingnamespacestd;voidsum(stringss1,stringss2){

stringss3=ss1+ss2;

cout<<"字符串"<<ss1<<"和"<<ss2<<"相加得"<<ss3<<endl;}

voidsum(floatff1,floatff2){

floatff3=ff1+ff2;

cout<<"浮点数"<<ff1<<"和"<<ff2<<"相加得"<<ff3<<endl;}

voidsum(intii1,intii2){

intii3=ii1+ii2;

cout<<"整数"<<ii1<<"和"<<ii2<<"相加得"<<ii3<<endl;}

intmain(){

stringss1,ss2;

cout<<"输入两个字符串"<<endl;

cin>>ss1>>ss2;

intii1,ii2;

cout<<"输入两个整数:"<<endl;

cin>>ii1>>ii2;

floatff1,ff2;

cout<<"输入两个浮点数:"<<endl;

cin>>ff1>>ff2;

sum(ss1,ss2);

sum(ff1,ff2);

sum(ii1,ii2);

return0;}2.#define_CRT_SECURE_NO_WARNINGS#include<iostream>#include<cstring>usingnamespacestd;

classStudent{public:

Student(){strcpy(name,"defaultname");score=60;}

Student(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论