C++考题.docx
- 文档编号:12891378
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:39
- 大小:20.99KB
C++考题.docx
《C++考题.docx》由会员分享,可在线阅读,更多相关《C++考题.docx(39页珍藏版)》请在冰豆网上搜索。
C++考题
《C++语言考题》(A卷)
一、选择题(每小题2分,共30分)
1、下列对函数的缺省参数的定义和描述及对函数的调用中正确的为。
A.voidshowmessage(char*text=”hello”,intlength,intcolor=0);
B.intpalette=1;
intgetcolor(intpal);
voidshowmessage(char*text,intlength=-1,intcolor=getcolor(palette));
C.在设置了函数的缺省参数后,调用函数的对应实参就必须省略。
D.showmessage(“howareyou!
”,,8);
2、下面对引用的定义及使用中正确的是。
A.int&Z;
B.intm=10;
float&t=&m;
C.voidf(int&a)
{a++;
cout< } voidmain() {f(3);} D.intd=2; int&f() {d++; returnd; } voidmain() {f();} 3、已知 constinta=1; intb=2; int*constcpint=&b; constint*pcint=&a; constintc=1; intd=2; constint&rcintc=c; constint&rcintd=d; 下列赋值中正确的为。 A.*cpint=5;B.*pcint=5;C.rcintc=5;D.rcintd=5; 4、下列函数中,不能重载。 A.成员函数B.非成员函数C.析构函数D.构造函数 5、有以下类的说明,请指出错误的地方。 classCsample { inta;(A) Csample(Csampleample);---------(B) Csample(intval): a(val)---------(C) {} ~Csample();--------------------------(D) }; 6、判断下面程序的输出: #include"iostream.h" inta=0,b=0; classA { public: inta,b; voidf(intc=2,intd=3) { a=c;b=d; } }; voidf(intc=3,intd=4) { a=c;b=d; } voidmain() { An; n.f(); cout< f(); cout< n.f(7,8); cout< } A.23B.23C.23D.23 34342323 34783478 7、关于缺省构造函数的下述描述中,是错误的。 A.如果没有定义构造函数或缺省构造函数,编译器会自动生成缺省构造函数。 B.如果类有缺省构造函数,则可以不传递参数而定义类对象。 C.缺省构造函数不对类对象数据成员赋初值。 D.如果定义了类的构造函数,则编译器不再生成缺省构造函数。 8、下面程序输出结果为。 #include"iostream.h" classA { public: virtualvoidf() {cout<<"A: : f()"< voidg() {f();} }; classB: publicA { public: virtualvoidf() {cout<<"B: : f()"< }; voidmain() {Aa2; a2.g(); A*pa=newB(); pa->f(); Bb; b.f(); a2=b; a2.g(); a2.f(); A&a=b; a.f(); deletepa; } A.A: : f()B.A: : f()C.A: : f()D.A: : f() B: : f()B: : f()A: : f()B: : f() B: : f()B: : f()B: : f()B: : f() B: : f()A: : f()A: : f()B: : f() A: : f()A: : f()A: : f()B: : f() B: : f()B: : f()A: : f()B: : f() 9、以下哪种构造函数不是单参数构造函数? A.复制构造函数 B.只有第一个参数,其它参数为缺省的构造函数。 C.缺省构造函数。 D.转换构造函数。 10、下面的函数f1()、f2()、f3()及对f3()的调用(D)中,正确的为。 #include”iostream.h” classA {private: inta; public: voidf1()const--------------------------------(A) { a=2; cout< } intf2(constintc)--------------------------(B) { a=3; c=a; returnc; } }; constint*f3()-----------------------------(C) { staticintz=0; z++; return&z; } voidmain() { Aa; cout< *f3()=5;--------------------------------(D) cout<<*f3(); } 11、下面程序中对成员函数的访问中,错误的是。 #include"iostream.h" classA { public: voidf1() { cout<<"f1()called"< } }; classB: protectedA { public: voidf2() { cout<<"f2()called"< } }; classC: privateB { public: voidf3() { f1();---------------------------------------------(A) cout<<"f3called"< } }; voidmain() { Cc; c.f2();-----------------------------------------------(B) c.f3();------------------------------------------------(C) Bb; b.f2();-------------------------------------------------(D) } 12、派生类的构造函数的成员初始化列表中,不能包含。 A.基类的构造函数。 B.派生类中对象成员的初始化。 C.基类中对象成员的初始化。 D.派生类中一般数据成员的初始化。 13、有关虚基类的描述中错误的是。 A.最派生类构造函数中的虚基类构造函数会被调用。 B.虚基类可以消除二义性。 C.每个派生类构造函数成员初始化器表中都包含有对虚基类构造函数的调用,故虚基类构造函数会被调用多次。 D.虚基类只有一个。 14、关于虚析构函数的下述描述中,是错误的。 A.基类中析构函数为虚析构函数,则派生类中的析构函数也为虚析构函数。 B.虚析构函数能保证delete运算符有效的释放基类及派生类对象。 C.将析构函数定义为虚析构函数是因为类中有虚函数。 D.虚析构函数并不能实现动态联编。 15、关于纯虚函数和抽象类的描述中,是错误的。 A.纯虚函数没有函数体。 B.抽象类及其派生类都可以定义对象。 C.若某个成员函数为纯虚函数,则该类为抽象类。 D.抽象类通常在类结构的顶层。 16、判断下面程序的输出结果。 #include"iostream.h" #include"string.h" classA { public: A(char*st); ~A(); private: charstring[50]; staticinta; }; A: : A(char*st) { strcpy(string,st); cout< } A: : ~A() { cout< } A: : a=2; voidfun() { AFunobj("fun"); staticAStaobj("sta"); cout< } AGlobobj("Glob"); voidmain() { intb=A: : a; AMainobj("Main"); cout< for(inti=0;i fun(); cout< } A.MainB.GlobC.GlobD.Glob funMainMainMain stafunfunfun Globstastasta stafunfunfun funstafunfun funfunstafun stastafunMain funfunMainsta funstastaGlob staMainGlob GlobGlob Main 17、下面标出的语句中使用正确的为。 #include classctest { private: staticintcount; inttest; public: staticintgetcount() { count=test;---------(A) returncount; } intsettest(constint&a) { test=a;----------------(B) returntest; } }; intctest: : count=5; voidmain() { constctestt1; t1.settest(5);------(C) t1.getcount();-------(D) } 18、下面程序输出结果。 #include"iostream.h" classA { public: A(intj){b=j;} intfun(intc) {return(a+b*c);} inta; private: intb; }; voidmain() { Ax(8); intA: : *pa; pa=&A: : a; x.*pa=6; int(A: : *pf)(int); pf=A: : fun; A*p=&x; cout<<(p->*pf) (2); } A.20B.22C.50D.66 19、下面程序的输出结果为。 #include"iostream.h" classA { public: A() {a=0;cout<<"A'sD.C.\n";} A(inti) {a=i;cout<<"A'sC.\n";} ~A() {cout<<"A'sD.\n";} private: inta; }; voidmain() { Aa1; Aa2[4]={ A(), a1, 5, 2.3 }; } A.A’SD.C.B.A’SD.C. A’SD.C.A’SC. A’SC.A’SC. A’SC.A’SC. A’SC.A’SC. A’SD.A’SD. A’SD.A’SD. A’SDA’SD. A’SD.A’SD. A’SD.A’SD C.A’SD.C.D.程序有错误 A’SD.C无法运行 A’SC. A’SC. A’SD. A’SD. A’SD. A’SD. A’SD. 20、下面程序输出结果。 #include"iostream.h" classA { public: A(constchar*s) {cout< ~A(){} }; classB: virtualpublicA { public: B(constchar*s1,constchar*s2) : A(s1) { cout< } }; classC: virtualpublicA { public: C(constchar*s1,constchar*s2) : A(s1) {cout< }; classD: publicC,publicB { public: D(constchar*s1,constchar*s2, constchar*s3,constchar*s4) : B(s1,s3),C(s1,s2),b(s3,s4),a(s1),A(s4) {cout< Aa; Bb; }; voidmain() { D*ptr=newD("A","B","C","D"); deleteptr; } A.DB.DC.DD.D BBBC CCCB AADD CDAA DAAA A 21、下面程序输出结果。 #include"iostream.h" classA { public: virtualvoidact1(); voidact2(); voidact3(){act1();act2();} }; voidA: : act1() { cout<<"A1"< } voidA: : act2() { cout<<"A2"< } classB: publicA {public: voidact1(); voidact2(); }; voidB: : act1() { cout<<"B1"< } voidB: : act2() { cout<<"B2"< } voidmain() { Bb; A&a1=b; A*a2=newA(); b.act3(); b.act1(); a1.act3(); a1.act1(); a2->act3(); } A.B1B.B1C.A1D.B1 A2A2A2A2 B1B1B1A1 A1B1A1B1 A2A2A2A2 B1B1B1A1 A1A1A1B1 A2A2A2A2 22、下面程序输出结果。 #include"iostream.h" classA { public: A(){} virtualvoidf() { cout<<"A: : f\n"; } voidh() { cout<<"A: : h"< } }; classB: publicA { public: B(){f();} virtualvoidf() { cout<<"B: : f\n"; } voidh() { cout<<"B: : h"< } }; classC: publicB { public: C(){} virtualvoidf() { cout<<"C: : f\n"; } voidh() { cout<<"C: : h"< } }; voidg(A*aa) { aa->f(); aa->h(); } voidmain() { B*bp=newC; g(bp); bp->h() deletebp; } A.C: : fB.C: : fC.B: : fD.B: : f B: : fC: : fB: : fC: : f A: : hA: : hA: : hA: : h B: : hA: : hB: : hB: : h 23、下面程序输出结果。 #include"iostream.h" classA { public: A(inti,intj){a=i,b=j;} voidmove(intx,inty) {a+=x;b+=y;} voidshow() {cout< protected: inta,b; }; classB: publicA { public: B(inti,intj,intk,intl) : A(i,j),x(k),y(l) {} voidshow()
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 考题