[计算机类试卷]国家二级C++机试(选择题)模拟试卷111及答案与解析.doc

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

1、国家二级 C机试(选择题)模拟试卷 111及答案与解析 一、选择题 1 有如下类定义和变量定义: class Parents public: int publicData; private: int privateData; ; class ChildA: public Parems *类体略 * ; class ChildB: private Parems *类体略 * ; ChildA a; ChildB b; 下列语句中正确的是 ( )。 ( A) tout using namespace std; class AA int k; protected: int n; void setK(

2、int k)this- k K; public: void setN(int n)this n n; ; class BB: public AA *类体略 * ; int main() BB x; x n 1; 1 x setN(2); 2 x k 3; 3 x setK(4); 4 return 0; 在标注号码的四条语句中正确的是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 4 有如下两个类定义 class xx private: double x1; protected: double x2; public: double x3; ; class YY: prote

3、cted XX private: double y1; potected: double y2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 5 有如下程序: #include using namespace std; class Music public: void setTitle(char*str)strcpy(title, str); protected: char type10; private: char title20; ; class Jazz: public Music publ

4、ic: void set(char*str) strcpy(type,“Jazz“); strcpy(title, str); ; 下列叙述中正确的是 ( )。 ( A)程序编译正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 和 都出错 6 当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是 ( )。 ( A)任何 ( B)公有或保护 ( C)保护或私有 ( D)私有 7 下列关于派生类和基类的描述中,正确的是 ( )。 ( A)派生类成员函数只能访问基类的公有成员 ( B)派生类成员函数只能访问基类

5、的公有和保护成员 ( C)派生类成员函数可以访问基类的所有成员 ( D)派生类对基类的默认继承方式是公有继承 8 有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D: public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是 ( )。 ( A) obj fan1(); ( B) obj fun2(); ( C) obj ftm3(); ( D) obj fun4(); 9 有如下程序: class

6、 Base public: int data; ; class Derivedl: public Base; class Derived2: protected Base; int main() Derivedl d1; Derived2 d2; d1 data 0; d2 data 0; return 0; 下列关于程序编译结果的描述中,正确的是 ( )。 ( A) 皆无编译错误 ( B) 有编泽错误, 无编译错误 ( C) 无编译错误, 有编译错误 ( D) 皆有编译错误 10 有如下程序: #include using namespace std; class xx int x; pub

7、lic: XX(int xx 0): x(xx) int getX()return x; ; class YY: public XX int y; public: YY(int xx, int yy): XX(xx), y(yy) int getV()return getX() y; ; int main() YY c(3, 4); cout using narnespace std; class Media public: void Name(); void Show(); protected: intpage; ; class Book: private Media public: voi

8、d Print() cout using namespace std; class A public: A()cout using namespace std; class Base protected: Base()cout using namespace std; classA public: A(int i)X i; void dispa()cout using namespace std; class Base int x; public; Baseint n 0; x(n)cout using namespace std; class AA public: AA()cout usin

9、g namespace std; class Base public: Base(int x 0): valB(x)cout using namespace std; class Basel public: Basel(int d) coutn n; ),对保护成员 n进行赋值操作。 【知识模块】 继承和派生 4 【正确答案】 C 【试题解析】 在 C中派生类从基类保护继承时,基类的公有成员在派生类中改变为保护 成员,基类的保护成员在派生类中仍为保护成员。所以对于本题来说, YY类保护继承自类 XX,那么类 XX中的公有成员 x3和保护成员 x2在派生类中都成为保护成员,再加上类 YY中的保护

10、成员 y2,因此在派生类 YY中保护成员的个数为 3。 【知识模块】 继承和派生 5 【正确答案】 C 【试题解析】 派生类 Jazz不能访问基类 Music中的私有成员 title。 【知识模块】 继承和派生 6 【正确答案】 B 【试题解析】 基类的公有成员和保护成员只有在以保护继承方式继承时,其在继承类中是保护成 员。 【知识模块】 继承和派生 7 【正确答案】 B 【试题解析】 派生类不论是采用那种继承方式继承基类,它的成员函数只能访问基类的公有成员和保护成员。 【知识模块】 继承和派生 8 【正确答案】 A 【试题解析】 派生类 D公有继承父类 B,所以 obj可以访问基类 B的公有

11、,不能访问其它成员。 【知识模块】 继承和派生 9 【正确答案】 C 【试题解析】 保护继承的类 Dervied2不能访问基类 Base中的公共数据成员data。 【知识模块】 继承和派生 10 【正确答案】 D 【试题解析】 由于类 YY公开继承自类 XX,所以执行表达式 c getV()c getX()的值等于 3 3 4 10。 【知识模块】 继承和派生 11 【正确答案】 B 【试题解析】 类 Book私有继承自类 Media,所以类 Media中的公有成员函数Name()在继承类 Book中变成了私有成员函数,因而类 Book的对象 Bible不能访问私有成员函数 Name()。 【

12、知识模块】 继承和派生 12 【正确答案】 D 【试题解析】 此题考查的是类的继承 和派生。系统首先要通过派生类的构造函数调用基类的构造函数,对基类成员初始化;然后对派生类中的新增成员初始化。 【知识模块】 继承和派生 13 【正确答案】 B 【试题解析】 此题考查的是派生类对象的构造与析构。建立派生类对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被定义时声明的顺序 (自左向右 ) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序 执行派生类的构造函数。所以本题在建立派生类 B的对象 0bj是会先调用基类 A的构造函数,然后调用自身的构造 函数。注意:

13、 B类中定义的成员 p是 A类的指针而不是一个对象,故在调用自身构造函数前不需要构造。而在 B类构造函数中使用 new操作符动态地构造了一个 A类的对象,所以整个构造结果是输出: ABA。 派生类对象的析构与构造严格相反,即先析构自身,然后析构自身所包含的成员对象,最后调用基类的析构函数。故本题中当 main()函数返回时,析构 B类的对象 obj:首先调用 B(),接着再调用 A()因为在 B()函数中释放了动态创建的A类对象,故整个析构所输出的结果是 B A A。所以这个程序输出结果为ABA B A A。 【知识模块】 继承和派生 14 【正确答案】 C 【试题解析】 此题考查的是派生类对

14、象的构造。建立派生类对象时,构造函数的执行顺序是:执行基类的构造函数,调用顺序按照各个基类被被继承时声明的顺序;执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序;执行派生类的构造函数。此题中,在建立派生类 Derived的对象 dl时会先调用基类 Base的构造,调用的是默认构造函数,输出字符 A;然后调用自身的构造函数,输出 B;故程序的输出结果是: AB。 【知识模块】 继承和派生 15 【正确答案】 A 【试题解析】 此题考查的是派生类对象的析构。释放派生类对象时,析构函数的执行顺序是:首先调用派生类自身的析构函数;然后调用类成员对象的析构函数;最后调用基类的析构函数。所

15、以四个选项中只有选项 A正确。 【知识模块】 继承和派生 16 【正确答案】 D 【试题解析】 此题考查的是派生类的构造函数和析构函数。在撤销派生类对象时,析构函数的执行过程和构造函数严格相反,即:对派生类新增普通成员进行清理;调用成员对象析构函数,调用基类析构函数对基类进行清理。 【知 识模块】 继承和派生 17 【正确答案】 C 【试题解析】 此题考查的是继承和派生。无论使用哪种继承方式,派生类中的成员都不能访问基类中的私有成员,而可以访问基类中的公有成员和保护成员,所以选项 A错误; C中只有抽象类不能被实例化,而虚基类不一定非得是抽象类,所以选项 B错误;在派生类中可以重新定义从基类继

16、承下来的虚函数,也可以不重新定义,故选项 D错误。 【知识模块】 继承和派生 18 【正确答案】 C 【试题解析】 此题考查的是派生类的构造。主函数中,首先声明 B类的对象 b,执行进 入 B的构造函数 B(int i)再接着执行 A的构造函数 A(int i),形参 i为 12, x被赋值 12;通过对象 b调用其成员函数 dispb(),输出结果 12:接着执行函数dispb()的第 2条语句输出 2,然后主函数结束。 【知识模块】 继承和派生 19 【正确答案】 C 【试题解析】 此题考查的是派生类的构造与析构。建立派生类的对象时,构造函数的执行顺序如下:执行基类的构造函数,调用顺序按照

17、各个基类被继承时声明的顺序 (自左向右 ) 执行成员对象的构造函数,调用顺序按照各个成员对象在类中声明的顺序 执行自身的构造函数。此题中,执行语句 Derived d1(3)首先调用基类的构造函数,输出 0:接着调用自身的构造函数输出 3。执行语句 Derived d2(5, 7)时,会调用基类的 Base(n)函数输出 7;然后执行继承类中的 Derived(int m, int n)的 y(m)输出 5。 【知识模块】 继承和派生 20 【正确答案】 A 【试题解析】 在基类 AA的默认构造函数中,输出字符 1,在继承类 BB的默认构造函数中,输出字符 2,在带有参数 n的构造函数中,输出

18、字符 3。在主函数中,在创 建 BB的对象 b(4)时,会首先调用基类 AA的构造函数输出字符 1,再调用类 BB带参数的构造函数输出字符 3。在创建 BB的对象 c时,会首先调用基类AA的构造函数输出字符 1,再调用类 BB默认的构造函数输出字符 2。所以程序输出的结果为 1312。 【知识模块】 继承和派生 21 【正确答案】 B 【试题解析】 在主函数中定义 C2类的对象,当程序结束时,首先调用 C2类的析构函数 C2,输出 2,再调用 C1类的析构函数 C1,输出 1。所以程序运行的结果就是 21。 【知识模块】 继承和派生 22 【正确答案】 A 【试题解析】 在主函数中创建类 De

19、rived对象 obj12(2,3)时,因为类 Derived是从基类 Base派生而来,所以首先调用基类的构造函数,输出 2,再调用派生类构造函数,输出 3。当主函数运算结果时,首先调用派生类的析构函数,输出 3,再调用基类的析构函数输出 2。所以输出结果为 2332。 【知识模块】 继承和派生 23 【正确答案】 A 【试题解析】 因为派生类从基类中继承,它含有基类中的数据成员和函数成员,所以当生成派生类对象时,能无条件的调用基类的构 造函数。 【知识模块】 继承和派生 24 【正确答案】 B 【试题解析】 根据派生类构造函数的一般格式: (): (), (), (), ()。在派生类 BB的构造函数总参数表后面应该接上基类名 AA和其参数。 【知识模块】 继承和派生 25 【正确答案】 D 【试题解析】 程序在创建派生类对象 d时,分别调用基类 Basel和 Basel的构造函数。 【知识模块】 继承和派生 26 【正确答案】 C 【试题解析】 基类的构造函数是带有参数的,派生类从基类派生,这就需要在派生类的构造函数名后面显示的调用基类的构造函数。 【知识模块】 继承和派生

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

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

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