C++考题2.docx
- 文档编号:9377706
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:25
- 大小:18.72KB
C++考题2.docx
《C++考题2.docx》由会员分享,可在线阅读,更多相关《C++考题2.docx(25页珍藏版)》请在冰豆网上搜索。
C++考题2
《C++语言考题》
一、选择题(每小题2分,共30分)
1、下列对函数的缺省参数的定义和描述及对函数的调用中错误的为。
A.voidshowmessage(char*text,intlength=-1,intcolor=0);
B.intpalette=1;
intgetcolor(intpal);
voidshowmessage(char*text,intlength=-1,intcolor=getcolor(palette));
C.在设置了函数的缺省参数后,调用函数的对应实参就必须省略。
D.showmessage(“hello”,-1,8);
2、下面描述及对引用的定义中正确的是。
A.int&Z;
B.intm=10;
float&t=&m;
C.引用a做函数参数,调用该函数时,向该函数传递的实参可以是和a相同类型的变量和常量。
D.返回引用类型的函数不能返回自动变量或形参的引用。
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=2;(A)
Csample();(B)
Public:
Csample(intval);(C)
~Csample();(D)
};
6、关于成员函数的下述描述中,是错误的。
A.成员函数可以设置参数的缺省值。
B.成员函数一定是内联函数。
C.成员函数可以重载。
D.成员函数可以是静态的。
7、关于缺省构造函数的下述描述中,是错误的。
A.如果没有定义构造函数或缺省构造函数,编译器会自动生成缺省构造函数。
B.如果类有缺省构造函数,则可以不传递参数而定义类对象。
C.缺省构造函数不对类对象数据成员赋初值。
D.如果定义了类的构造函数,则编译器不再生成缺省构造函数。
8、下面对成员函数f()的调用A、B、C、D中,不是动态联编的为
#include"iostream.h"
classA
{
public:
virtualvoidf()
{cout<<"A:
:
f()called"< voidg() {f();}---------------------------------------(A) }; classB: publicA { public: virtualvoidf() {cout<<"B: : f()called"< }; voidmain() { A*pa=newB(); pa->f();-----------------------------------------(B) Bb; b.f();-------------------------------------------(C) A&a=b; a.f();-------------------------------------------(D) Aa2; a2.g(); deletepa; } 9、以下哪种构造函数不是单参数构造函数? A.复制构造函数 B.只有第一个参数,其它参数为缺省的构造函数。 C.缺省构造函数。 D.转换构造函数。 10、已知: print()函数是一个类的常成员函数,它无返回值,下列表示中,是正确的。 A.voidprint()const; B.constvoidprint(); C.voidconstprint; D.voidprint(const); 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.f3();-----------------------------------------------(B) c.f2();------------------------------------------------(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.抽象类通常在类结构的顶层。 二、分析下列程序的输出结果(每小题3分,共30分) 1、#include"iostream.h" #include"string.h" classA { public: A(char*st); ~A(); private: charstring[50]; }; A: : A(char*st) { strcpy(string,st); cout< } A: : ~A() { cout< } voidfun() { AFunobj("fun"); staticAStaobj("sta"); cout< } AGlobobj("Glob"); voidmain() { AMainobj("Main"); cout< fun(); cout< } 2、 #include classctest { private: staticintcount; public: ctest() { ++count; } ~ctest() { --count; } staticintgetcount() { returncount; } }; intctest: : count=5; voidmain() { cout< : getcount() <<"objectexist\n"; ctesttest1; ctest*ptest2=newctest; cout< : getcount() <<"objectexist\n"; deleteptest2; cout< : getcount() <<"objectexist\n"; } 3、 #include"iostream.h" classA { public: A(intj){a=j;} intfun(intb) {return(a+b*c);} intc; private: inta; }; voidmain() { Ax(8); intA: : *pc; pc=&A: : c; x.*pc=5; int(A: : *pfun)(int); pfun=A: : fun; A*p=&x; cout<<(p->*pfun)(5); } 4、 #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; }; classB: publicA { public: B() {b=0;cout<<"B'sD.C-\n";} B(inti,intj,intk) : A(i),aa(j) {b=k;cout<<"B'sC-\n";} ~B() {cout<<"B'sD.-\n";} private: intb; Aaa; }; voidmain() { B*pb=newB[2]; pb[0]=B(1,2,3); pb[1]=B(); delete[]pb; } 5、 #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),A(s4) {cout< }; voidmain() { D*ptr=newD("A","B","C","D"); deleteptr; } 6、 #include"iostream.h" classA { public: virtualvoidact1(); voidact2(); voidact3(){act1();act2();} }; voidA: : act1() { cout<<"A: : act1()called"< } voidA: : act2() { cout<<"A: : act2()called"< } classB: publicA {public: voidact1(); voidact2(); }; voidB: : act1() { cout<<"B: : act1()called"< } voidB: : act2() { cout<<"B: : act2()called"< } voidmain() { Bb; b.act3(); b.act1(); } 7、 #include"iostream.h" classA { public: A(){} virtualvoidf() { cout<<"A: : f()called\n"; } voidh() { cout<<"A: : h()called"< } }; classB: publicA { public: B(){f();} virtualvoidf() { cout<<"B: : f()called\n"; } voidh() { cout<<"B: : h()called"< } }; classC: publicB { public: C(){} virtualvoidf() { cout<<"C: : f()called\n"; } voidh() { cout<<"C: :
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 考题