版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计(西安理工大学)智慧树知到期末考试答案+章节答案2024年西安理工大学析构函数可以被重载,不能有任何参数,有返回值。
答案:错如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都须重复使用关键字()。
答案:typename###class类模板代表一个具体的类,可以直接用于定义对象。
答案:错对于文件的访问方式,C++提供()读写方式。
答案:顺序###随机()的功能是在创建对象时,给数据成员赋初值,即对象的初始化。
答案:构造函数()是标准输出流。
答案:cout以下程序的输出结果为()#include#includeusingnamespacestd;voidmyread(constchar*fname){ifstreamfile_read(fname,ios::binary);charc;if(file_read){while(file_read.get(c))//文件没有结束时读入cout<}}voidmywrite(constchar*fname){ofstreamfile_write(fname,ios::binary);charc='A';if(file_write){for(inti=0;i<6;i++)file_write.put(c+i);}}intmain(){charfname[20]="word.file";mywrite(fname);myread(fname);return0;}
答案:ABCDEF以下程序的输出结果为()#include#includeclassSample{public:intx,y;Sample(){x=y=0;}Sample(inta,intb){x=a;y=b;}voiddisp(){cout<<"x="<}~Sample(){if(x==y)cout<<"x=y"<elsecout<<"x!=y"<}};voidmain(){Samples1(2,3);s1.disp();if(s1.x==2)exit(0);}
答案:x=2,y=3以下程序的输出结果为(
)#include'iostream'usingnamespacestd;templatevoidPrintArray(T*Array,intcount){for(inti=0;i答案:12345以下程序的输出结果为()#includeintp(intx=4,inty=5,intz=6){returnx+y+z;}voidmain(){inta=3,b=4,c=0;c=p(b,c);cout<<c;}
答案:10一个类中有且仅有一个析构函数,且应为(
)。
答案:public以下程序的输出结果为()#includeclassB{public:B(){a=b=0;}B(inti,intj){a=i;b=j;}voidprintb(){cout答案:7,8以下程序的输出结果为(
)#includeusingnamespacestd;classbase{public:virtualchar*
show()const=0;};classd1:virtualpublicbase{public:char*
show()const{return'd1';}};classd2:virtualpublicbase{public:char*
show()const{return'd2';}};classm:publicd1,publicd2{public:char*show()const{
returnd2::show();}};intmain(){mm1;cout<答案:d2模板分函数模板和(
)。
答案:类模板以下程序的输出结果为()#includeint&f(int&i){i*=5;returni;}intmain(){intk=3;int&m=f(k);m=50;cout<return0;}
答案:50友元函数可以在类的私有部分进行声明,也可以在类的公有部分进行声明。
答案:对以下程序的输出结果为2234#includeclassSample{intx;public:Sample(){x=0;}Sample(inta){cout<<(x=a);}~Sample(){
cout<<++x;}voiddisp(){
cout<答案:对一旦一个引用被初始化为指向一个对象,它也可以被改变为指向另一个对象的引用。
答案:错如有定义constinti=5;constintj=3;constint*p=&i;则执行语句p=&j;是合法的。
答案:对输出运算符<答案:错输出运算符<答案:错给一组变量输入值时,用()将输入的数值间隔开。
答案:空格###换行下列叙述中不正确的是()
答案:抽象类不能作为派生类的基定义一个整形常量x并设其初值为5的格式为()。
答案:constintx=5;当引用被创建时,它必须被(
)。
答案:初始化以下程序的输出结果为()#includeclassSample{private:intx;public:Sample(){cout<<(x=0);}Sample(inti,intj){cout<<(x=i+j);}~Sample(){cout<};voidmain(){Sample*p1=newSample,*p2=newSample(3,4);deletep1;deletep2;}
答案:0707函数模板和类模板提供了()的通用机制。
答案:类型参数化赋值运算符不能重载为()函数。
答案:友元以下程序的输出结果为()#includeclassSample{intn;intm;public:Sample(inti=0,intj=5){n=i;m=j;}Sample&operator=(Sample);voiddisp(){cout<}};Sample&Sample::operator=(Samples){n=s.n;m=s.m;return*this;}voidmain(){Samples1(20),s2;s2=s1;s2.disp();}
答案:20,5如果在try块内没有发生异常,则直接转到所有catch块后的(
)语句执行下去。
答案:第一条为防止一个对象不被通过传值方式传递,需要声明一个(
)拷贝构造函数。
答案:私有定义命名空间的关键字为()。
答案:namespace以下程序的输出结果为()#includeclassX{//基类protected:inta;public:voidmake(inti){a=i;}};classY{protected:inta;public:voidmake(inti){a=i;}};classZ:publicX,publicY{public:intmake(inti){returnX::a*Y::a;}};voidmain(){Zzobj;zobj.X::make(10);zobj.Y::make(20);cout<<zobj.make(30)<<endl;}
答案:200类和对象之间的关系是()的关系。
答案:抽象和具体以下程序的输出结果为()#includeclassSample{intn;public:Sample(){}Sample(inti){n=i;}friendSampleoperator-(Sample&,Sample&);friendSampleoperator+(Sample&,Sample&);voiddisp(){cout<<"n="<};Sampleoperator-(Sample&s1,Sample&s2){intm=s1.n-s2.n;returnSample(m);}Sampleoperator+(Sample&s1,Sample&s2){intm=s1.n+s2.n;returnSample(m);}voidmain(){Samples1(10),s2(20),s3;s3=s2-s1;s3.disp();s3=s2+s1;s3.disp();}
答案:n=10,n=30,C++把每个文件都看成是一个有序的()。
答案:字节流以下程序的输出结果为()#includeclassSample{public:Sample(inta=0,intb=1);voiddisp();~Sample();private:intx,y;};Sample::Sample(inta,intb){x=a;y=b;}voidSample::disp(){cout<}Sample::~Sample(){if(x)cout<elsecout<}voidmain(){Samples1(1,2),s2;}
答案:11以下程序的输出结果为()#includeclassSample{intn;public:Sample(inti){n=i;}operator++(){n++;}//前缀重载运算符operator++(int){n+=2;}//后缀重载运算符voiddisp(){cout<<"n="<}};voidmain(){SampleA(2),B(2);A++;//调用后缀重载运算符++B;//调用前缀重载运算符A.disp();B.disp();}
答案:n=4,n=3,要向文件中输出数据,则必须定义()类的对象。
答案:ofstream如有定义intconst*p;表示指针不能被改变。
答案:错输入运算符>>不支持级联输入。
答案:错析构函数可以重载。
答案:错非成员函数作为类的友元函数有this指针。
答案:错重载不能改变运算符的原有(
)。
答案:结合性###优先级面向对象程序设计方法的基本特征主要有抽象性、()和多态性。
答案:封装性###继承性对于C++中的模板类型参数T,只能是系统预定义的数据类型。
答案:错C++的流库预定义了4个流,它们是cin和()。
答案:clog###cerr###cout构造函数可以声明为虚函数。
答案:错如有constintMAX=100;则定义intiData[MAX];是非法的。
答案:错对于catch块来说,处理错误之后可以让程序继续运行,也可以终止程序。
答案:对函数重载是指两个或两个以上的函数具有相同的函数名,但要求()。
答案:参数个数不同###参数类型不一致派生类不能继承基类的构造函数和析构函数。
答案:对如有定义inti=5,&j=i;则j值的变化不会引起i值得变化。
答案:错通过对()进行重载,可以实现定义对象时初始化赋值的多样性。
答案:构造函数以下程序的输出结果为()#includeclassThreeD{private:intx,y,z;public:ThreeDoperator++();voidShow(){cout<<x<<","<<y<<","<<z<<",";}voidAssign(inti,intj,intk){x=i;y=j;z=k;}};voidmain(){ThreeDa,b;a.Assign(1,2,3);b=++a;a.Show();b.Show();}ThreeDThreeD::operator++(){x++;y++;z++;return*this;}
答案:2,3,4,2,3,4,以下程序的输出结果为()#includeclassSample{intn;public:Sample(){}Sample(intm){n=m;}friendvoidsquare(Sample&s){s.n=s.n*s.n;}voiddisp(){cout<<"n="<}};voidmain(){Samplea(10);square(a);a.disp();}
答案:n=100当派生类也作为基类使用时,则各派生类只负责其(
)基类的构造。
答案:直接的以下程序的输出结果为()#includeclassSample{intn;public:Sample(inti){n=i;}friendintadd(Sample&s1,Sample&s2);};intadd(Sample&s1,Sample&s2){returns1.n+s2.n;}voidmain(){Samples1(10),s2(20);cout<}
答案:30以下程序的输出结果为()#includeintp(intx=4,inty=5){returnx+y;}voidmain(){inta=3,b=4,c=0;c=p(b);cout<<c;}
答案:9以下程序的输出结果为()#includeclassSample{public:intx;inty;voiddisp(){cout<}};voidmain(){intSample::*pc;Samples;pc=&Sample::x;s.*pc=10;pc=&Sample::y;s.*pc=20;s.disp();}
答案:10,20()就是针对对象的行为特征,如鸟会飞、会跳等方面,可以抽象为方法。
答案:过程抽象C++支持两种多态性,即编译时的多态性和运行时的多态性。运行时的多态性是通过()来实现的。
答案:虚函数不同的对象,收到同一消息可以产生不同的结果,这种现象称为()。
答案:多态性以下程序的输出结果为(
)#includeclasssample{intn;public:sample(){};sample(intm){n=m;}sampleadd(samples1,samples2){
this->n=s1.n+s2.n;
return(*this);}voiddisp(){
cout<<'n='<答案:n=15当函数被声明为一个类的(
)后,它就可以通过对象名访问类的私有成员和保护成员。
答案:友元函数双目运算符重载为类的友元函数时,其参数表有()个参数。
答案:2类模板的模板参数(
)
答案:其它三者皆是()是一个函数,它与一般函数的区别是在使用时可以像宏一样展开,所以没有函数调用的开销。
答案:内联函数this指针是C++实现()的一种机制。
答案:封装以下程序的输出结果为()#includeclassCSample{inti;public:CSample(){i=1;cout<}voiddisp(){cout<<++i;}~CSample(){cout<}};voidmain(){CSamples;s.disp();}
答案:133测试块作为普通作用域,由关键字()引导。
答案:try如果找不到匹配类型的catch语句,系统函数()被调用,终止程序。
答案:terminate以下程序的输出结果为()#include"iostream"usingnamespacestd;templateTresult(T*a,intn=0){Tb=1;inti;for(i=0;i{b*=a[i];}returnb;}intmain(){inta[]={2,3,4,5};cout<return0;}
答案:120定义对象时,编译系统会自动地调用()。
答案:构造函数以下程序的输出结果为()#include#includeintmain(){ofstreamoutf("data.dat");charp[]="GoodMorning";outf<outf.close();ifstreaminf("data.dat");inf>>p;cout<return0;}
答案:Good以下程序的输出结果为(
)#includeclassB;classA{inti;friendB;voiddisp(){cout<答案:2以下程序的输出结果为(
)#includeclassBase{inti;public:Base(intI):i(I){}virtualintvalue()const{
returni;}virtualintshift(intx)const{returni;}};classDer:publicBase{public:Der(intI):Base(I){}intvalue()const{
returnBase::value()*2;}virtualintshift(intx)const{
returnBase::value()<答案:7,14,56定义A是一个类,那么执行语句“Aa,b(3),*p;”调用了()次构造函数。
答案:2以下程序的输出结果为()#include#includeusingnamespacestd;ostream&myoutput(ostream&stream){stream<returnstream;}intmain(){inti=123;cout<return0;}
答案:123,173当用传递值方式传递或返回一个对象时,编译器自动调用(
)函数。
答案:拷贝构造以下程序的输出结果为(
)#includeclassSample{intn;public:Sample(){}Sample(inti){n=i;}Sample&operator=(Sample);voiddisp(){cout<<'n='<答案:n=10下面程序输出的正确结果是(
)#includeclassThreeD{private:intx,y,z;public:ThreeDoperator++();ThreeDoperator++(inti);voidShow(){
cout<答案:2,3,4,1,2,3,类类型转换函数只能定义为一个类的()函数。
答案:成员异常处理不仅提供了程序的容错性,还提供了各种(
)的方法。
答案:捕获异常异常处理部分必须(
)放在测试块之后。
答案:直接如果发生异常,则根据throw抛出的异常对象类型来匹配一个(
)语句。
答案:catchC++语言提供了异常接口声明语法,利用它可以清晰地告诉使用者异常抛出的(
)。
答案:类型如果找到类型匹配的catch语句,进行捕获,其参数被初始化为(
)对象,执行相应catch内的语句模块。
答案:指向异常给定void
f()throw();
则该函数f能抛出(
)异常。
答案:自定义类型###float###int如不想在异常抛出时退出函数,可在函数内创建一个(
),用于测试各种错误。
答案:特殊块如果任意层的异常处理器都没有捕获到异常(没有指定相应的catch块),称为(
)。
答案:未捕获异常在try之后,根据异常的不同情况,相应的处理方法由关键字(
)引导。
答案:catch如有异常抛出,可以使用(
)类型变量作为参数。
答案:自定义###预定义###int下列关于getline( )函数的叙述中,错误的是(
)。
答案:getline( )函数仅用于从键盘而不能从文件读取字符串以下程序的输出结果为(
)#include#includeusingnamespacestd;ostream&myoutput(ostream&stream){stream<答案:91,5B*****打开文件的方式中,(
)以追加方式打开文件。
答案:ios::app以下程序的输出结果为(
)#include#includeusingnamespacestd;ostream&myoutput(ostream&stream){stream<答案:123,123控制格式输入输出的操作中,函数(
)是用来设置填充字符。要求给出函数名和参数类型。
答案:setfill要从文件中输入数据,则必须定义(
)类的对象。
答案:ifstream要通过“<<”输出自定义的类类型,则必须重载该运算符为(
)函数。
答案:友元在C++的流对象中,(
)表示标准输入的istream类对象。
答案:cin根据数据的组织形式,文件分为(
)。
答案:文本文件###二进制文件以下程序的输出结果为(
)#include#includeusingnamespacestd;intmain(){ofstreamoutf("data.dat");inti;for(i=0;i<10;i++){outf<>i;cout<答案:0,123,456,789,789,模板函数与函数重载相同,可以互相取代。
答案:错把模板参数实例化后,由函数模板产生的函数称为(
),它是函数模板的具体实例。
答案:模板函数类模板代表了一类(
),模板类表示某一具体的类。
答案:类类模板的成员函数都是模板函数。
答案:对使用函数模板的方法与使用普通函数类似,即使用(
)代替模板参数并调用。
答案:实参函数模板代表了一类函数,是对一类函数的抽象,它以(
)类型为参数。
答案:int###char###自定义一个(
)允许用户为类定义一种模式,使得类中的某些数据成员及某些成员函数的返回值能取任意类型。
答案:类模板如果一个模板声明列出了多个参数,则每个参数之间必须使用逗号隔开,每个参数都须重复使用关键字(
)。
答案:class类模板的使用实际上是将类模板实例化成为一个具体的(
)。
答案:模板类类模板本身在编译中会生成额外的代码。
答案:错在派生类中重新定义虚函数时,除了(
),其他方面都必须与基类中相应的虚函数保持一致。
答案:函数体抽象类用做提供(
)类的接口,不能声明对象。
答案:派生如果派生类没有给出全部纯虚函数的实现,这时的派生类仍然是一个(
)类。
答案:抽象在派生类的声明中,如果只有一个基类名,则这种继承方式称为(
)。
答案:单继承如果一个类带有纯虚函数,则此类称为(
)类。
答案:抽象(
)函数和全局函数不能声明为虚函数。
答案:静态成员抽象类只能用做其他类的(
)类,不能建立抽象类对象。
答案:基关于虚函数和抽象类描述错误的是(
)。
答案:一个基类中声明有纯虚函数,则它的派生类一定不再是抽象类必须在派生类的(
)函数中调用初始化虚基类的构造函数。
答案:构造普通对象调用虚函数,系统仍然以(
)方式调用函数。
答案:静态绑定前置单目运算符重载为类的成员函数时,其参数表有(
)个参数。
答案:0将一个char型数据转换为String类型(用户自定义类型)的数据时,可以用(
)函数完成类类型转换。
答案:构造双目运算符重载为类的成员函数时,其参数表有(
)个参数。
答案:1用构造函数完成类类型的转换,类内至少定义一个(
)的构造函数。
答案:只带一个参下列运算符中,必须使用成员函数进行重载的是(
)。
答案:=对赋值运算符进行重载时,应声明为(
)函数。
答案:非静态成员下列关于运算符重载的描述中,错误的是(
)。
答案:加法运算符"+"和赋值运算符"="都重载之后,意味着"+="也被重载了如何只带一个参数(或其他参数都带有默认值)的(
)函数都可以认为是一种转换构造函数。
答案:构造大多数的运算符重载可以重载为类的(
)。
答案:成员函数###友元函数C++中只能重载C++语言中(
)的运算符。
答案:原先已定义一旦一个引用被初始化为指向一个对象,它就(
)被改变为对另一个对象的引用。
答案:不能引用作为函数参数时,函数实参与形参之间的传递是(
)传递。
答案:双向在类里创建一个const数据成员时不能赋初值,只能在(
)里对其赋初值。
答案:构造函数如执行语句以下语句之后,x的值为(
)。inta[5]={1,2,3},&x=a[2];int*y=&x;y++;
答案:3如执行语句以下语句之后,x的值为(
)。intx=5,*y=&x;int*&z=y;z++;
答案:5引用是通过变量的别名(
)访问变量。
答案:直接常对象只能调(
)函数。
答案:常成员定义q为一个指向int类型的变量i的常指针语句(
)
答案:int*constq=&i;已知:constintx=23;定义指针q指向x,语句是(
)
答案:constint*q=&x;关于拷贝构造函数的描述正确的是(
)。
答案:如果不自定义拷贝构造函数,系统提供默认的拷贝构造函数函数重载是指两个或两个以上的函数具有(
)的函数名,但参数类型不一致或参数个数不同。
答案:相同函数重载是C++对C语言的扩展,包括(
)重载。
答案:非成员函数###成员函数成员函数重载的一个很重要的应用就是重载(
)。
答案:构造函数一个类的友元函数能够访问该类的(
)
答案:所有成员函数重载是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或(
)不同。
答案:参数个数(
)是指两个或两个以上的函数具有相同的函数名,但参数类型不一致或参数个数不同。
答案:函数重载在类内给出函数体定义的成员函数被默认为(
)。
答案:内联函数在内联函数体中不能含有如下哪些语句(
)。
答案:switch语句###while语句内联函数的关键字是(
)。
答案:inline在函数调用时,若某个参数省略,则其后的参数皆应省略而采用(
)。
答案:默认值以下程序的输出结果为(
)#includeclassSample{intx;public:Sample(){cout<<(x=0);}Sample(inti){cout<<(x=i);}~Sample(){cout<答案:33如果不定义析构函数,系统会自动生成一个默认的(
)。
答案:析构函数请选择出下面程序的输出结果(
)#includefloatf(floatx,floaty){returnx+y;}intf(intx,inty){returnx+y;}voidmain(){floata,b,c;a=b=50.5;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论