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

上传人:deputyduring120 文档编号:497727 上传时间:2018-11-30 格式:DOC 页数:22 大小:57.50KB
下载 相关 举报
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷16及答案与解析.doc_第1页
第1页 / 共22页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷16及答案与解析.doc_第2页
第2页 / 共22页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷16及答案与解析.doc_第3页
第3页 / 共22页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷16及答案与解析.doc_第4页
第4页 / 共22页
[计算机类试卷]国家二级C++机试(类和对象)模拟试卷16及答案与解析.doc_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、国家二级 C+机试(类和对象)模拟试卷 16及答案与解析 一、选择题 1 有如下程序 #inc1ude iostream #inc1ude iomanip using namespace std; c1ass MyClass public: MyClass()cout A; ) MyClass(charc)cout c; MyClass()cout B; ; int main() MyClass p1, *p2; p2 newMyClass(X); delete p2; retum 0; 执行这个程序屏幕上将显示输出 ( )。 ( A) ABX ( B) ABXB ( C) AXB ( D)

2、AXBB 2 有如下程序: #inc1ude iostream using namespace std; c1ass test private: int a; public: test0 cout+“constructor“+end1; test(int a)cout+a+end1;) test(const test test( )Cout+“dcstructor“+end1; ; int main() test A(3); retum 0; 运行时输出的结果是 ( )。 ( A) 3 ( B) constructor destructor ( C) copy Destructor ( D)

3、3 destructor 3 对于一个类定义,下列叙述中错误的是 ( )。 ( A)如果没有定义拷贝构造函数,编译器将生成一个拷贝构造函数 ( B)如果没有定义缺省的构造函数,编译器将一定生成一个缺省的构造函数 ( C)如果没有定义构造函数,编译器将生成一个缺省的构造函数和一个拷贝构造函数 ( D)如果已经定义了构造函数和拷贝构造函数,编译器不会生成任何构造函数 4 有 如下程序: #inc1ude iostream using namespace std; c1ass Part public: Part(int x=0):val(x)cout val; Part0 cout val;) pr

4、ivate: int val, ; c1ass Whole public: Whole(int x,int y, int z=0):p2(x),p1(y),val(z)cout val;) Whole()cout val; private: Part p1,p2; int val; ; int main() Whole obj(1,2,3); return 0; 程序的输出结果是 ( )。 ( A) 123321 ( B) 213312 ( C) 213 ( D) 123123 5 有如下程序: #inc1ude iostream using namespace std; c1ass Base

5、 public: Base(int x=0)cout x; ; c1ass Derived:public Base public: Derived(int x=0)cout x, private: Base val; ; int main() Derived d(1); retum 0; 程序的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) 01 ( D) 001 6 有如下类定义: c1ass MyClass Int value, public; MyClass(int n): value (n) int gerValue()const return value; ; 则类 My

6、Class的构造函数的个数是 ( )。 ( A) 1个 ( B) 2个 ( C) 3个 ( D) 4个 7 在 C+中,编译系统自动为一个类生成缺省构造函数的条件是 ( )。 ( A)该类没有定义任何有参构造函数 ( B)该类没有定义任何无参构造函数 ( C)该类没有定义任何构造函数 ( D)该类没有定义任何成员函数 8 有如下程序: #inc1ude iostream using namespace std; c1ass Samp1e public: Samp1e() Samp1e()cout *; ; int main() Samp1e temp2, *pTemp2; retum 0; 执

7、行这个程序输出星号 (*)的个数为 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 9 有如下程序: #inc1ude iostream using namespace std; c1ass MyClass public: MyClass(int i=0)cout 1; MyClass(const MyClass MyClass return*tlus; MyClass()cout 4; ; int main() MyClass obj1(l),obj2(2),obj3(objl); retum 0: 运行时的输出结果是 ( )。 ( A) 112444 ( B) 11114

8、444 ( C) 121444 ( D) 11314444 10 有如下程序: #inc1ude iostream #inc1ude cstring using namespace std; c1ass XCF int a; public: XCF (int aa=0): a(aa)cout “1“; XCF(XCF x)a=x a;cout “2“; XCF()cout a; int Geta()returna; ; int main() XCF dl(5), d2(d1); XCF *pd=new XCF(8); cout pd Geta(); delete pd; return 0; 运

9、行时的输出结果是 ( )。 ( A) 1215588 ( B) 1218855 ( C) 12185 ( D) 128512 11 有如下程序: #inc1ude iostream using namespace std; c1ass ONE int C; public: ONE(): c(O)cout l; ) ONE(int n): c(n)cout 2;) ; c1ass TWO ONE one1; ONE one2; public: TWO(int m): one2(m)cout 3; ; int main() TWO t(4); return 0; 运行时的输出结果是 ( )。 (

10、A) 3 ( B) 23 ( C) 123 ( D) 213 12 Samp1e是一个类,执行下面语 句后,调用 Samp1e类的构造函数的次数是( )。 Samp1e a2, *P=new Samp1e; ( A) 0 ( B) 1 ( C) 2 ( D) 3 13 有如下程序: #inc1ude iostream using namespace std; c1ass Toy public: Toy(char* _n) strcpy(name, _n), count+; Toy()count; char* GetName() retum name,) static int getCount(

11、) return count; private: char name10; static int count; ; intToy:count=0; int main() Toy tl(“Snoopy“), t2(“Mickey“), t3(“Barbie“); cout t1 getCount() end1; return 0; 还行时的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)运行时出错 14 有如下程序: #inciude iostream using namespace std; c1ass Name char name20; public: Name()

12、strcpy(name, “); cout ? ; Name(char *fname) strcpy(name,fname); cout ? ; ; int main() Name names3=Name(“张三 “), Name(“李四 “); return 0; 运行此程序输出符号?的个数是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 15 有如下程序 #inc1ude iostream using namespace std; c1ass Test public: Test() Test(const Testretum t; int main()Test x,y;

13、x=fun(y);return 0; 运行这个程序的输出结果是 ( )。 ( A)无输出 ( B) 1 ( C) 11 ( D) 111 16 若 MyClass为一个类,执行 “MyClass a41, *p5;“语句时会自动调用该类构造函数的次数是 ( )。 ( A) 2 ( B) 5 ( C) 4 ( D) 9 17 有如下程序: #inc1ude iostream using namespace std; c1ass CD public: CD()couF, C; private: char name80; ; int main()CD a,*b, d2;return 0; 运行时的输

14、出结果是 ( )。 ( A) CCCC ( B) CCC ( C) CC ( D) C 18 有如下程序: #inc1ude iostream using namespace std; c1ass XA int a; public: static int b; XA(int aa):a(aa)b+; XA() int get()retum a; ; int XA:b =0; int main() XA dl(2), d2(3); cout d1 get()+d2 get()+XA:b end1; return 0; 运行时的输出结果是 ( )。 ( A) 5 ( B) 6 ( C) 7 ( D

15、) 8 19 下列关于析构函数的描述中,错误的是 ( )。 ( A)析构函数可以重载 ( B)析构函数由系统自动调用 ( C)每个对象的析构函数只被调用一次 ( D)每个类都有析构函数 20 下列关于构造函数的描述中,错误的是 ( )。 ( A)构造函数名与类名相同 ( B)构造函数可以有返回值 ( C)构造函数可以重载 ( D)每个类都有构造函数 21 若 PAT是一个类,则程序运行时,语句 “PAT*ad3; ”调用 PAT的构造函数的次数是 ( )。 ( A) 0 ( B) 1 ( C) 2 ( D) 3 22 有如下程序: #inc1ude iostream using namespa

16、ce std; c1ass MyClass public: MyClass () cout *; MyClass (MyClass MyClass() cout ; ; int main(), MyClass a; Myc1ass b(a); return 0; 运行时的输出结果是 ( )。 ( A) *# ( B) #* ( C) *# ( D) #* 23 有如下程序: #inc1ude iostream using namespace std; c1ass Monkey public: Monkey() cout M; Monkey(char n) cout n; Monkey() co

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

18、 MyString public: char str80; MyString(const char*s) strcpy(str,s);) MyString ; ostream int main() MyString x(“abc“),y(“cde“); cout (x+=y) end1; return 0; 运行这个程序的输出结果是 ( )。 ( A) abc ( B) cde ( C) abcde ( D) abccde 26 下列关于 this指针的叙述中,正确的是 ( )。 ( A)任何与类相关的函数都有 this指针 ( B)类的成员函数都有 this指针 ( C)类的友元函数都有 t

19、his指针 ( D)类的非静态成员函数才有 this指针 国家二级 C+机试(类 和对象)模拟试卷 16答案与解析 一、选择题 1 【正确答案】 D 【试题解析】 此题考查的是构造函数和析构函数。构造函数在对象被创建的时候由系统自动调用,而析构函数在对象的生存期即将结束的时候由系统自动调用。此题中,主程序在创建 MayClass类的对象 p1时,调用 MayClass类的默认构造函数,输出字母 A:然后在创建 p2对象时,调用带字母参数的构造函数,输出字母X;语句 delete p2;调用析构函数,输出字母 B:在主函数退出时,调用析构函数清除对象 p1,输出字母 B。 【知识模块】 类和 对

20、象 2 【正确答案】 D 【试题解析】 此题考查的是构造函数和析构函数。一个类可以有多个构造函数,但只能有一个析构函数。每一个对象在被创建时,都会隐含调用众多构造函数中的一个,而在销毁时又会隐含调用唯一的析构函数。此题中,主函数创建对象 A是会隐含调用 test(int a)这个构造函数,输出 3;接着主函数结束,对象 A销毁又隐含调用 test()析构函数输出 destructor。 【知识模块】 类和对象 3 【正确答案】 B 【试题解析】 此题考查的是构造函数。如果一个类中没有定义任 何构造函数,编译器将生成一个不带参数的公有缺省构造函数。但只要定义了一个任意的构造函数,就不会生成缺省构

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

22、输出 213312。 【知识模块】 类和对象 5 【正确答案】 D 【试题解析】 此题考查的是类的构造。建立类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明的顺序 (自左向右 )执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序执行自身的构造函数。本题中,首先会 构造基类 Base,调用 Base类的构造函数,输出 0;然后还定义了一个 Base类的对象,再次调用 Base类的默认构造函数输出 0;最后构造自身,因主函数中传入了构造参数 1,所以输出 1。故最后输出结果是: 001。 【知识模块】 类和对象 6 【正确答案】 A 【试题解析

23、】 此题考查的是构造函数的概念。构造函数的名字必须与类名相同;构造函数不指定返回值类型;构造函数可以重载:在创建对象时,系统会自动调用构造函数。 【知识模块】 类和对象 7 【正确答案】 C 【试题解析】 如果一个类 中定义了一个缺省的构造函数,则使用该函数。如果一个类中没有定义任何构造函数,编译器将生成一个不带参数的共有缺省构造函数。 【知识模块】 类和对象 8 【正确答案】 B 【试题解析】 在 maln函数中,定义了 Samp1e temp2的一个包含两个对象的数组,还定义了一个 *pTemp2,是包含两个指向类对象的指针的数组,故定义的指针当 main函数结束后是不会调用析构函数的,只

24、有包含两个对象的数组 temp2会调用析构函数,因此只输出两个 *。 【知识模块】 类和对象 9 【正确 答案】 A 【试题解析】 当创建 MyClass类对象 obj1(1)和 obj2(2)时候,调用类构造函数会输出两个 1,然后创建类对象 obj3(obj(1)时,会调用拷贝类构造函数,输出一个2,然后当 main函数结束时候,调用三个对象的析构函数会输出三个 4。 【知识模块】 类和对象 10 【正确答案】 B 【试题解析】 在这个程序中在建立对象 d1(5)时,调用构造函数 XCF(int aa=0):a(aa) cout “1“; ),输出 1;在建立 d2(d1)时,调用拷贝构造

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

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

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

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

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