ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:57.50KB ,
资源ID:1331949      下载积分:5000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-1331949.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(【计算机类职业资格】国家二级C++机试(类和对象)模拟试卷12及答案解析.doc)为本站会员(eastlab115)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

【计算机类职业资格】国家二级C++机试(类和对象)模拟试卷12及答案解析.doc

1、国家二级 C+机试(类和对象)模拟试卷 12及答案解析(总分:54.00,做题时间:90 分钟)一、选择题(总题数:27,分数:54.00)1.有如下类声明: class Foo int bar; ; 则 Foo类的成员 bar是( )。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员D.私有成员函数2.有如下类定义: class Foo public: Foo(int v):value(v) -Foo() private: F00() int value=0; ; 其中存在语法错误的行是( )。(分数:2.00)A.B.C.D.3.有如下类定义: class Test pu

2、blic: Test()a=0;c=0; int f(int a) bonstthis-a=a; static int g ()return a; void h(int b)Test:b=b; private: int a; static int b: const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是( )。(分数:2.00)A.B.C.D.4.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue成员函数的实现中,

3、正确的是( )。(分数:2.00)A.SAMPLE:setValue(int n0)n=n0;B.void SAMPLE:setValue(int n0)n=n0;C.Void setValue(int n0)n=n0;D.(int n0)n=n0;5.以下关键字不能用来声明类的访问权限的是( )。(分数:2.00)A.publicB.staticC.protectedD.private6.下列关于类定义的说法中,正确的是( )。(分数:2.00)A.类定义中包括数据成员和函数成员的声明B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函数只能在类体外进行定义7.如果派生类

4、以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是( )。(分数:2.00)A.public和 publicB.public和 protectedC.protected和 publicD.protected和 protected8.下列有关类成员的叙述中,正确的是( )。(分数:2.00)A.友元函数是类的成员函数B.类成员的默认访问权限是私有的C.类成员函数必须声明为公有的D.类的静态数据成员不能是常成员9.下列运算符函数中,肯定不属于类 Value的成员函数的是( )。(分数:2.00)A.Value operator+(V

5、alue);B.Value operator-(Value,Value);C.Value operator*(int);D.Value operator(Value);10.有如下程序: #includeiostream #includecstring using namespace std; class XCD char*a; int b; public: XCD(char*aa,int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char*Geta()return a; int Getb0 return b; ; int main() c

6、har *p1=abcd,*p2=weirong; int d1=6,d2=8; XCD x(p1,d1),y(p2,d2); coutstrlen(xGeta()+yGetb()end1; return 0; 运行时的输出结果是( )。(分数:2.00)A.12B.16C.14D.1111.有如下两个类定义: class AA; class BB AA v1,*v2; BB v3; int *v4; ; 其中有一个成员变量的定义是错误的,这个变量是( )。(分数:2.00)A.vlB.v2C.v3D.v412.有如下程序: #includeiostream using namespace s

7、td; class Point int x,y; public: Point(int x1=0,int y1=0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) int getOreturn centerget0+radius; ; int main() Circle c(3,4,5); coutcget()end1; return 0; 运行时的输出结果是( )。(分数:2

8、.00)A.5B.7C.9D.1213.若 AA为一个类,a 为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回 a的值。如果 x为该类的一个对象,要在类外访问 x对象中 a的值,正确的访问格式为( )。(分数:2.00)A.AAgetA()B.xgetA()C.xAD.AA:a14.有如下类定义: class MyClass int b;char a;double c; public: MyClass():c(00),b(0),a(,) ; 创建这个类的对象时,数据成员的初始化顺序是( )。(分数:2.00)A.a,b,cB.c,b,aC.b,a,cD.c,a,

9、b15.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系16.若有如下类声明 class MyClass public: MyClass()cout1; ; 执行下列语句 MyClass a,b2,*p2: 以后,程序的输出结果是( )。(分数:2.00)A.11B.111C.1111D.1111117.建立一个类对象时,系统自动调用( )。(分数:2.00)A.析构函数B.构造函数C.静态函数D.友元函数18.若 MyClass是一个类名,且有如下语句序列 MyCl

10、ass c1,*c2; MyClass *c3=new MyClass; MyClass &c4=c1; 上面的语句序列所定义的类对象的个数是( )。(分数:2.00)A.1B.2C.3D.419.要定义一个引用变量 p,使之引用类 MyClass的一个对象,正确的定义语句是( )。(分数:2.00)A.MyClass p=MyClass;B.MyClass p=new MyClass;C.MyClass &p=new MyClass;D.MyClass a,p=a;20.下列关于对象初始化的叙述中,正确的是( )。(分数:2.00)A.定义对象的时候不能对对象进行初始化B.定义对象之后可以显

11、式地调用构造函数进行初始化C.定义对象时将自动调用构造函数进行初始化D.在一个类中必须显式地定义构造函数实现初始化21.有如下程序: #includeiostream using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get0return m; int getoconstreturn m+n; ; int main() Pair a(3,5); const Pair b(3,5); coutaget()bget(); return 0; 运行时的输出结果是( )。(分数:2.00)A

12、.33B.38C.83D.8822.有如下类定义: class MyClass int x; public: MyClass0:x(0),y(0) int GetX()returia x; void SetX(int xx)x=xx; int y; ; 已知 obi是类 MyClass的对象,下列语句中违反类成员访问控制权限的是( )。(分数:2.00)A.objxB.objyC.objGetX()D.objSetX(0)23.有如下程序:#includeiostreamusing namespace std;class Point public: static int number;publ

13、ic: Pointonumber+; -Point()number-; ; int Point:number-0: void mainO Point *ptr; Point A,B; Point *ptr_Point=new Point3; ptx=ptr_point; ) Point C; Gout+Point:number+end1; deleteptr; 运行时输出的结果是( )。(分数:2.00)A.3B.4C.6D.724.在下列函数原型中,可以作为类从构造函数的是( )。(分数:2.00)A.voidAA(int);B.int AA0;C.AA(int)const;D.AA(int

14、);25.有如下类定义: class Point int x_,y_; public: Point():x_(0),y_(0) Point(int x,int y=0):x_(x),y_(y) ; 若执行语句 Point a(2),b3,*c4; 则 Point类的构造函数被调用的次数是( )。(分数:2.00)A.2次B.3次C.4次D.5次26.下列情况中,不会调用拷贝构造函数的是( )。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的一个对象赋值给该类的另一个对象时C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时

15、27.有如下程序 #includeiostream #includeiomanip using namespace std; class MyClass public: MyClass()coutA; MyClass(chaf c)coutc; MyClass()coutB; ;int main() MyClass p1,*p2; p2=new MyClass(X); delete p2; return 0; 执行这个程序屏幕上将显示输出( )。(分数:2.00)A.ABXB.ABXBC.AXBD.AXBB国家二级 C+机试(类和对象)模拟试卷 12答案解析(总分:54.00,做题时间:90

16、分钟)一、选择题(总题数:27,分数:54.00)1.有如下类声明: class Foo int bar; ; 则 Foo类的成员 bar是( )。(分数:2.00)A.公有数据成员B.公有成员函数C.私有数据成员 D.私有成员函数解析:解析:此题考查的是类的定义。在定义类的成员变量时,如果没有使用关键字;所有成员默认定义为 private私有权限。2.有如下类定义: class Foo public: Foo(int v):value(v) -Foo() private: F00() int value=0; ; 其中存在语法错误的行是( )。(分数:2.00)A.B.C.D. 解析:解析:

17、此题考查的是类的定义。C+语言规定,在类体内不允许对所定义的数据成员进行初始化。3.有如下类定义: class Test public: Test()a=0;c=0; int f(int a) bonstthis-a=a; static int g ()return a; void h(int b)Test:b=b; private: int a; static int b: const int c; ; int Test:b=0; 在标注号码的行中,能被正确编译的是( )。(分数:2.00)A.B.C.D. 解析:解析:此题考查的是类的定义。一个类的长数据成员的初始化只能在成员初始化列表中进

18、行,故选项 A错误;常成员函数不能更新对象的数据成员,故选项 B错误;静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中说明的非静态成员,故选项 C错误。4.有如下类声明: class SAMPLE int n; public: SAMPLE(int i=0):n(i) void setValue(int n0); ; 下列关于 getValue成员函数的实现中,正确的是( )。(分数:2.00)A.SAMPLE:setValue(int n0)n=n0;B.void SAMPLE:setValue(int n0)n=n0; C.Void setValue(int n0)n=n0;

19、D.(int n0)n=n0;解析:解析:此题考查了成员函数的定义格式。在类外部对成员函数定义时的一般格式为:返回类型类名:成员函数名(参数表)函数体,故此题正确答案为选项 B。5.以下关键字不能用来声明类的访问权限的是( )。(分数:2.00)A.publicB.static C.protectedD.private解析:解析:此题考查的是类的访问权限。在 C+语言中,类的访问权限有公有、保护和私有三种。故本题选 B。6.下列关于类定义的说法中,正确的是( )。(分数:2.00)A.类定义中包括数据成员和函数成员的声明 B.类成员的缺省访问权限是保护的C.数据成员必须被声明为私有的D.成员函

20、数只能在类体外进行定义解析:解析:此题考查的是类的定义。类中缺省的访问权限是私有的,所以选项 B错误:类的数据成员和成员函数的访问控制权限均可被声明为公有、私有和保护中的一种,所以选项 C错误:成员函数的实现可以在类体内定义,也可以在类体外定义,所以选项 D错误。7.如果派生类以 protected方式继承基类,则原基类的 protected成员和 public成员在派生类中的访问属性分别是( )。(分数:2.00)A.public和 publicB.public和 protectedC.protected和 publicD.protected和 protected 解析:解析:此题考查的是基

21、类成员在派生类中的访问属性。派生类中的成员不能访问基类中的私有成员,可以访问基类中的公有成员和保护成员。派生类从基类公有继承时,基类的公有成员和保护成员在派生类中仍然是公有成员和保护成员;派生类从基类私有继承时,基类的公有成员和保护成员在派生类中都变成私有成员;派生类从基类保护继承时,基类的公有成员在派生类中变成保护成员,基类的保护成员在派生类中仍然是保护成员。8.下列有关类成员的叙述中,正确的是( )。(分数:2.00)A.友元函数是类的成员函数B.类成员的默认访问权限是私有的 C.类成员函数必须声明为公有的D.类的静态数据成员不能是常成员解析:解析:此题考查的是类成员的有关概念。类的友元函

22、数可以直接访问该类的所有成员,但它不是类的成员函数,故选项 A错误:类成员函数的访问权限可以声明为公有、保护、私有,故选项 C错误;静态数据成员的声明是使用关键字 static,它可以是常成员,故选项 D错误。9.下列运算符函数中,肯定不属于类 Value的成员函数的是( )。(分数:2.00)A.Value operator+(Value);B.Value operator-(Value,Value); C.Value operator*(int);D.Value operator(Value);解析:解析:运算符作为非成员函数时,由于没有隐含 this指针,因此所有的操作数必须出现在参数表

23、中。对于第二个选项,出现了两个操作数,必然是非成员函数,但是对于其他三个选项,有可能都是要求两个操作数的成员函数。10.有如下程序: #includeiostream #includecstring using namespace std; class XCD char*a; int b; public: XCD(char*aa,int bb) a=new charstrlen(aa)+1; strcpy(a,aa); b=bb; char*Geta()return a; int Getb0 return b; ; int main() char *p1=abcd,*p2=weirong; i

24、nt d1=6,d2=8; XCD x(p1,d1),y(p2,d2); coutstrlen(xGeta()+yGetb()end1; return 0; 运行时的输出结果是( )。(分数:2.00)A.12 B.16C.14D.11解析:解析:由类 XCD的定义可知,成员函数 Geta()返回的是字符串的长度,Getb()返回的是参数 b的值。在主函数中 strlen(xGeta()的值等于 4,yGetb()的值等于 8,所以输出两者的和为 12。11.有如下两个类定义: class AA; class BB AA v1,*v2; BB v3; int *v4; ; 其中有一个成员变量的

25、定义是错误的,这个变量是( )。(分数:2.00)A.vlB.v2C.v3 D.v4解析:解析:在定义类的数据成员时,类中的数据成员可以是任意类型,包括整型、浮点型、字符符型、数组、指针和引用等,也可以是对象。但是要注意,只有另外一个类的对象,才可以作为该类的成员,即作为类的成员对象存在。自身类的对象是不可以作为自身类的成员存在,但自身类的指针可以。对于本题,在定义类 BB时,不能包括其对象 v3。12.有如下程序: #includeiostream using namespace std; class Point int x,y; public: Point(int x1=0,int y1=

26、0):x(x1),y(y1) int get()return x+y; ; class Circle Point center; int radius; public: Circle(int cx,int cy,int r):center(cx,cy),radius(r) int getOreturn centerget0+radius; ; int main() Circle c(3,4,5); coutcget()end1; return 0; 运行时的输出结果是( )。(分数:2.00)A.5B.7C.9D.12 解析:解析:根据类 Point和类 Circle韵定义可知,类 Circl

27、e的实例 c(3,4,5)的成员函数 cget()返回值为 3+4+5=12。13.若 AA为一个类,a 为该类的私有整型数据成员,getA()为该类的一个非静态公有成员函数,功能是返回 a的值。如果 x为该类的一个对象,要在类外访问 x对象中 a的值,正确的访问格式为( )。(分数:2.00)A.AAgetA()B.xgetA() C.xAD.AA:a解析:解析:要在类外访问 x对象中 a的值,必须调用类的非静态公有成员函数 getA()。14.有如下类定义: class MyClass int b;char a;double c; public: MyClass():c(00),b(0),

28、a(,) ; 创建这个类的对象时,数据成员的初始化顺序是( )。(分数:2.00)A.a,b,cB.c,b,aC.b,a,c D.c,a,b解析:解析:类的成员初始化顺序与成员变量在构造函数中的位置先后顺序无关,只与成员变量在类中定义的先后顺序有关。15.下列关于类和对象的叙述中,错误的是( )。(分数:2.00)A.一个类只能有一个对象 B.对象是类的具体实例C.类是对某一类对象的抽象D.类和对象的关系是一种数据类型与变量的关系解析:解析:此题考查的是类和对象的概念。类是用户定义的一种数据类型,可以使用这个类型来说明一个或多个变量,即对象。16.若有如下类声明 class MyClass p

29、ublic: MyClass()cout1; ; 执行下列语句 MyClass a,b2,*p2: 以后,程序的输出结果是( )。(分数:2.00)A.11B.111 C.1111D.11111解析:解析:此题考查的是对象的构造。本题共声明了一个 MyClass对象 a,一个包含 2个 MyClass对象的数组 b和一个包含 2个 MyClass对象指针的数组 p,所以一共创建了 3个 MyClass类的对象,即调用了3次构造函数。17.建立一个类对象时,系统自动调用( )。(分数:2.00)A.析构函数B.构造函数 C.静态函数D.友元函数解析:解析:建立一个类的对象时,编译程序需要为对象分

30、配存储空间,进行必要的初始化。在 C+中,这项工作是由构造函数来完成。18.若 MyClass是一个类名,且有如下语句序列 MyClass c1,*c2; MyClass *c3=new MyClass; MyClass &c4=c1; 上面的语句序列所定义的类对象的个数是( )。(分数:2.00)A.1B.2C.3 D.4解析:解析:C1、*C2、C3 是 3个 MyClass对象,C4 是 MyClass对象的引用,它是对象 C1的别名。19.要定义一个引用变量 p,使之引用类 MyClass的一个对象,正确的定义语句是( )。(分数:2.00)A.MyClass p=MyClass;B.

31、MyClass p=new MyClass;C.MyClass &p=new MyClass;D.MyClass a,p=a; 解析:解析:在选项 D中,定义了 MyClass类的一个对象 a和引用变量 p,并且声明 p初始化为对 a的引用。20.下列关于对象初始化的叙述中,正确的是( )。(分数:2.00)A.定义对象的时候不能对对象进行初始化B.定义对象之后可以显式地调用构造函数进行初始化C.定义对象时将自动调用构造函数进行初始化 D.在一个类中必须显式地定义构造函数实现初始化解析:解析:建立对象时根据给定的参数调用相应的构造函数对对象进行初始化。无参数时表示调用缺省构造函数。构造函数在对

32、象被创建时由系统自动调用。21.有如下程序: #includeiostream using namespace std; class Pair int m,n; public: Pair(int j,int k):m(j),n(k) int get0return m; int getoconstreturn m+n; ; int main() Pair a(3,5); const Pair b(3,5); coutaget()bget(); return 0; 运行时的输出结果是( )。(分数:2.00)A.33B.38 C.83D.88解析:解析:在主函数中定义了类 Pair的一个实例变量

33、a,并分别对实例变量 a的数据成员 m,n 赋初值3,5。所以调用 aget()成员函数时,输出 3。又定义类 Pair的一个常实例变量 b,并分别对实例变量b的数据成员 m,n 赋初值 3,5。所以调用成员函数 bget()时,输出 8。22.有如下类定义: class MyClass int x; public: MyClass0:x(0),y(0) int GetX()returia x; void SetX(int xx)x=xx; int y; ; 已知 obi是类 MyClass的对象,下列语句中违反类成员访问控制权限的是( )。(分数:2.00)A.objx B.objyC.ob

34、jGetX()D.objSetX(0)解析:解析:由类 MyClass的定义可知,数据成员 x属于私有成员,所以只能在类的内部访问。类MyClass的对象 obj不能访问类 MyClass的私有成员 x。23.有如下程序:#includeiostreamusing namespace std;class Point public: static int number;public: Pointonumber+; -Point()number-; ; int Point:number-0: void mainO Point *ptr; Point A,B; Point *ptr_Point=ne

35、w Point3; ptx=ptr_point; ) Point C; Gout+Point:number+end1; deleteptr; 运行时输出的结果是( )。(分数:2.00)A.3B.4C.6 D.7解析:解析:此题是静态成员、对象的构造和对象的生存期等知识点的综合考查。此题定义了一个静态成员变量 number,初始值为 0。主函数中第 2行定义了 2个 Point对象,此时 number变为 2:随后 new运算符又定义了一个包含 3个 Point对象元素的数组,其通过 delete结束后 number的值变为 5;然后又定义了一个 Point对象 C,number 变为 6:最

36、后输出 number的内容。24.在下列函数原型中,可以作为类从构造函数的是( )。(分数:2.00)A.voidAA(int);B.int AA0;C.AA(int)const;D.AA(int); 解析:解析:此题考查的是构造函数的概念。构造函数是类的一个特殊成员函数,它与类同名,并且没有返回值。选项 A、B 不符合要求。选项 C中函数 AA,会更新对象的数据成员。25.有如下类定义: class Point int x_,y_; public: Point():x_(0),y_(0) Point(int x,int y=0):x_(x),y_(y) ; 若执行语句 Point a(2),

37、b3,*c4; 则 Point类的构造函数被调用的次数是( )。(分数:2.00)A.2次B.3次C.4次 D.5次解析:解析:此题考查的是类的构造函数。构造函数在对象创建的时候由系统自动调用。在 Point a(2),b3,*c4语句中:a(2)是定义一个对象并传入构造函数 2,所以此时会调用以此构造函数;b3是定义一个包含 3个对象的数组,所以构造函数会被调用 3次;*c4定义的是 4个 P0int类对象指针的数组,它并没有创建任何 Point对象,所以不调用构造函数。26.下列情况中,不会调用拷贝构造函数的是( )。(分数:2.00)A.用一个对象去初始化同一类的另一个新对象时B.将类的

38、一个对象赋值给该类的另一个对象时 C.函数的形参是类的对象,调用函数进行形参和实参结合时D.函数的返回值是类的对象,函数执行返回调用时解析:解析:此题考查的是复制构造函数的概念。用一个已知的对象初始化一个正在创建的同类对象时,就会发 生复制构造函数。因此,选项 A、C、D 均会调用复制构造函数,而只有选项 B没有创建的动作,不调用复制构造函数。27.有如下程序 #includeiostream #includeiomanip using namespace std; class MyClass public: MyClass()coutA; MyClass(chaf c)coutc; MyCl

39、ass()coutB; ;int main() MyClass p1,*p2; p2=new MyClass(X); delete p2; return 0; 执行这个程序屏幕上将显示输出( )。(分数:2.00)A.ABXB.ABXBC.AXBD.AXBB 解析:解析:此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建 MayClass类的对象 p1时,调用 MayClass类的默认构造函数,输出字母 A;然后在创建*p2 对象时,调用带字母参数的构造函数,输出字母 X;语句 delete p2:调用析构函数,输出字母 B;在主函数退出时,调用析构函数清除对象 p1,输出字母 B。

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1