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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

[计算机类试卷]国家二级C++机试(类和对象)模拟试卷19及答案与解析.doc

1、国家二级 C+机试(类和对象)模拟试卷 19及答案与解析 一、选择题 1 有如下程序: #include iostream using narnespace std; class test private: int a; public: test0cout+constructor+endl; test(int a)cout+a+endl; test(const test调用 PAT的构造函数的次数是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 21 有如下程序: #include iostream using namespace std; class MyClass pu

2、blic: MyClass () cout *; MyClass (MyClass&a) cout #; MyClass() cout ; ; int main(); MyClass a; Myclass b(a); return 0; 运行时的输出结果是 ( )。 ( A) *# ( B) #* ( C) *# ( D) #* 22 有如下程序: #include iostream using namespace std; class Monkey public: Monkey() cout M; Monkey(char n) cout n; Monkey() cout Y; ; int m

3、ain() Monkey p1, *p2; p2=new Monkey(X); delete p2; return 0; 运行这个程序的输出结果是 ( )。 ( A) MYX ( B) MYMY ( C) MXY ( D) MXYY 23 下列关于类成员对象构造函数调用顺序的叙述中,正确的是 ( )。 ( A)与它们在初始化列表中的顺序相同 ( B)与它们在类中声 明的顺序相同 ( C)与析构函数的调用顺序相同 ( D)顺序不确定 24 有如下程序: #include iostream #include cstring using namespace std; class MyString p

4、ublic: char str80; MyString(const char*s)strcpy(str, s); MyString&operator+=(MySring a) strcat(str, a str); return*this; ; ostream&operator (ostream&s,const MyString&z)return s z str; int main() MyString x(abe), y(ede); eout (x+=y) end1; return 0; 运行这个程序的输出结果是 ( )。 ( A) ahc ( B) Cde ( C) abCde ( D)

5、ahccde 25 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 this指针 ( D)类的非静态成员函数才有 this指针 26 有如下头文件: int f1(); static int f2(); class MA public: int f3(); static int f4(); ; 在所描述的函数中 ,具有隐含的 this指针的是 ( )。 ( A) fl ( B) f2 ( C) f3 ( D) f4 27 下列程序段中包含 4个函数。其中具有隐含 this指针的是

6、 ( )。 int fun1(); class Test public: int fun2(); friend int fun3(): static int fun4(); ( A) fun1 ( B) fun2 ( C) fun3 ( D) fun4 国家二级 C+机试(类和对象)模拟试卷 19答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象 A是会隐含调用。 test(int a)这个

7、构造函数,输出 3;接着主函数结束,对象 A销毁又隐含调用 test()析构函数输出 destructor。 【知识模块】 类和对象 2 【正确答案】 B 【试题解析】 此题考查的是构造函数。 如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构造函数了。 【知识模块】 类和对象 3 【正确答案】 B 【试题解析】 此题考查的是类的构造与析构。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序 (自左向右 )接着执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺

8、序,最后执行自身的构造函数。析构顺序与之相反。本题中, Whole类中有两个 Part类的成员 p1和 p2,根据它们定义的顺序,先构造 p1再构造 p2。所以,首先被构造的是 p1(y),输出 2;第二个被构造的是 p2(x),输出 1;最后调用析构函数,输出 val的值 3;析构函数调用顺序与构造函数相反。故最后输出 213312。 【知识模块】 类和对象 4 【正确答案】 D 【试题解析】 此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序 (自左向右 )-执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺

9、序 -执行自身的构 造函数。本题中,首先会构造基类 Base,调用 Base类的构造函数,输出 0:然后还定义了一个 Base类的对象,再次调用 Base类的默认构造函数输出 0;最后构造自身,因主函数中传入了构造参数 1,所以输出 1。故最后输出结果是: 001。 【知识模块】 类和对象 5 【正确答案】 A 【试题解析】 此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载;在创建对象时,系统会自动调用构造函数。 【知识模块】 类和对象 6 【正确答案】 C 【 试题解析】 如果一个类中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有

10、定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。 【知识模块】 类和对象 7 【正确答案】 B 【试题解析】 在 main函数中,定义了 Sample temp2的一个包含两个对象的数组,还定义了一个 *pTemp2,是包含两个指向类对象的指针的数组,故定义的指针当 main函数结束后是不会调用析构函数的,只有包含两个对象的数组 temp2会调用析构函数,因此只输出两个 *。 【知识模块】 类 和对象 8 【正确答案】 A 【试题解析】 当创建 MyClass类对象 obj1(1)和 obj2(2)时候,调用类构造函数会输出两个 1,然后创建类对象 obj3(obj(1)时,会调

11、用拷贝类构造函数,输出一个2,然后当 main函数结束时候,调用三个对象的析构函数会输出三个 4。 【知识模块】 类和对象 9 【正确答案】 B 【试题解析】 在这个程序中在建立对象 dl(5)时,调用构造函数 XCF(int aa=0):a(aa)tout “1“; ),输出 1;在建立 d2(d1)时,调用拷贝 构造函数XCF(XCF&x)a=x a; cout “2“; ,输出 2;在建立 newXCF(8)对象时,调用构造函数 XCF(int aa=0): a(aa)cout “1“; ,输出 1;语句 cout pd-Geta()的功能是输出 8;语句 delete pd;调用析构函

12、数 XCF(),输出 8;当退出程序时,分别释放对象 d2、 d1,输出 55。 【知识模块】 类和对象 10 【正确答案】 C 【试题解析】 由类 TWO的定义可知,其成员为类 ONE的两个对象 one1和one2。所以在主函数中 构建类 TWO的对象 t(4)时,先后调用类 ONE的构造函数ONE(): c(0)cout 1; 和 ONE(int n): c(n)cout 2; 输出 12,然后再调用类 TWO的构造函数 TWO(int m): one2(m)cout 3; ,输出 3。 【知识模块】 类和对象 11 【正确答案】 D 【试题解析】 在 C+中,声明一个类对象时,编译程序需

13、要调用类的构造函数为对象分配存储空间,进行必须的初始化。在本题的这条语句中,声明了一个Sample类型的包含 2个数组元素的数组 a2,一 个指向类 Sample对象的指针 P,所以 Sample类的构造函数共调用了 3次。 【知识模块】 类和对象 12 【正确答案】 C 【试题解析】 类 Toy中包含一个字符数组 name和一个静态整型变量 count。在程序中首先给类 Toy的成员 count的赋初始值 0,然后在主函数中,定义了三个Toy对象 t1、 t2、 t3,并分别对它们的 name字段赋值,在赋值的同时变量 count的值加 l,所以最后变量 count的值等于 3。 【知识模块

14、】 类和对象 13 【正确答案】 D 【试题解析】 类 Name有两个构造函数,在默认构造函数中,给字符数组 name赋空值,并输出一个 ?;在带有字符指针的构造函数中,把字符指针 fname所指的字符串赋给字符数组 name,并输出一个 ?。所以在主函数中,定义了 Name的三个对象, name0、 name1、 name2,在创建这三个对象时,会调用构造带参数的函数对前两个对象赋值,调用默认的构造函数把 nanle2的值赋为空值。这时会输出三个 “?”符号。 【知识模块】 类和对象 14 【正确答案】 C 【试题解析】 在类 Test中定义拷贝构造函数 Test(const Test&t)

15、,其函数体为输出 1,在主函数 main中,当执行语句 x=fun(y),调用拷贝函数用对象 y的值构造对象 u,输出 1,在执行函数 fun()的 return语句时,调用拷贝函数构造匿名对象,输出 1。 【知识模块】 类和对象 15 【正确答案】 C 【试题解析】 语句 MyClass a4, *p5不仅定义了 4个 MyClass对象,分别为a0, a1, a2, a3,而且定义了 5个指向 MyClass对象的指针变量,分别为*p0, *p1, *p2, *p3, *p4,所以共调用 MyClass的构造函数 4次。 【知识模块】 类和对象 16 【正确答案】 B 【试题解析】 在这个

16、程序的主函数中定义了 3个 CD类的实例对象 a,d0, d1和一个指向 CD类对象的指针变量 b,所以当程序结束时,执行 CD的析构函数输出字符 C三次。 【知识模块】 类和对象 17 【正确答案】 C 【试题解析】 执行 XA类的实例变量 d1(2)时,成员函数 d1 get()的返回值等于2, XA.b的值等于 1,执行 XA类的实例变量 d2(3)时,成员 函数 d1 get()的返回值等于 3, XA b的值等于 2,所以输出结果为 2+3+2=7。 【知识模块】 类和对象 18 【正确答案】 A 【试题解析】 一般情况下,析构函数在对象的生存周期即将结束的时候由系统自动调用。在调用

17、完成之后,对象也就消失了,相应的内存空间也被释放。析构函数没有参数,因此析构函数不能重载,一个类中只能定义一个析构函数。 【知识模块】 类和对象 19 【正确答案】 B 【试题解析】 构造函数具有下面 4个特殊的性质:构造函数的名字必须与类名相同;构造函数不指 定返回类型,它隐含有返回值,由系统内部使用;构造函数可以有一个或多个参数。因此构造函数可以重载;在创建对象时,系统会自动调用构造函数。 【知识模块】 类和对象 20 【正确答案】 A 【试题解析】 语句 “PAT(*ad)3”定义了含有 3个元素的指向类 PAT类型的指针数组 ad。 【知识模块】 类和对象 21 【正确答案】 C 【试

18、题解析】 程序在执行时,先创建类对象 a,输出 *,再创建类对象 b,输出#,然后再依次调用类对象 b和 a的析构函数,输出两个。 【知识模块】 类和 对象 22 【正确答案】 D 【试题解析】 在类 Monkey中定义了默认的构造函数和带参数的构造函数,所以在主函数中,定义 Monkey的对象 p1时,调用默认的构造函数,输出 M;定义Monkty的对象 p2讨,调用带参数的构造函数,输出 X;在执行 “delete p2; ”语句时,调用析构函数,输出 Y,在退出程序时,调用析构函数输出 Y。 【知识模块】 类和对象 23 【正确答案】 B 【试题解析】 类成员对象构造函数的调用是按照在类

19、中定义的顺序进行的,而不是按照构造函数说明后的冒号顺序进行 构造的。 【知识模块】 类和对象 24 【正确答案】 D 【试题解析】 在类 MyString中,定义了带参数的构造函数 MyString(const char*s),其作用是把 s指向的字符串拷贝到字符组 str中。在类中还对运算 +=进行重载定义,其作用是把字符串 s仃和 a相连接并赋给 str,所以在主函数中执行x+=y时,结果为 abccde。 【知识模块】 类和对象 25 【正确答案】 D 【试题解析】 此题考查的是 this指针的使用。类的每一个成员函数都有一个隐含的常量指针,即 this指针。类的静态成员函数不能含有 t

20、his指针,因为 this指针是一个指向本对象的指针。 【知识模块】 类和对象 26 【正确答案】 C 【试题解析】 此题考查的是。 this指针。 this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。题目中,只有 f3()满足 “类的非静态成员函数 ”的要求,故应选 C选项。 【知识模块】 类和对象 27 【正确答案】 B 【试题解析】 this指针是成员函数所属对象的指针,它指向类对象的地 址。成员函数通过这个指针知道自己属于哪一个对象。 this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确的地表示出了成员函数当前操作的数据所属的对象。 【知识模块】 类和对象

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