[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷4及答案与解析.doc
《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷4及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷4及答案与解析.doc(22页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C+机试(继承和派生)模拟试卷 4及答案与解析 一、选择题 1 有如下程序: #include iostream using namespace std; class BASE public: BASE()cout “BASE“; ; class DERIVED: public BASE public: DERIVED()cout “DERIVED“; ; int main()DERIVED x; return 0; 执行后的输出结果是 ( )。 ( A) BASE ( B) DERIVED ( C) BASEDERIVED ( D) DERIVEDBASE 2 在下列关键字中,不能
2、用来表示继承方式的是 ( )。 ( A) private ( B) static ( C) public ( D) protected 3 有如下类定义: class XX int xx; public: xx(): xx(O)cout A; XX(int n): xx(n)cout B; ; class YY: public XX int yy; public: YY(): yy(0)cout yy; YY(int n): XX(n+1), yy(n)cout yy; YY(int m, int n): XX(m), yy(n)cout yy; ; 下列选项中,输出结果为 A0的语句是 (
3、)。 ( A) YY y1(0, 0); ( B) YY y2(1); ( C) YY y3(0); ( D) YY y4; 4 下列代码段声明了 3个类 class Person; class Student: public Person; class Undergraduate: Student; 下列关于这些类之间关系的描述中,错误的是 ( )。 ( A)类 Person是类 Undergraduate的基类 ( B)类 Undergraduate从类 student公有继承 ( C)类 student是类 Person的派生类 ( D)类 Undergraduate是类 Person的
4、派生类 5 下列描述中,错误的是 ( )。 ( A)公有继承时基类中的公有成员在派生类中仍是公有成员 ( B)公有继承时基类中的保护成员在派生类中仍是保护成员 ( C)保护继承时基类中的公有成 员在派生类中仍是公有成员 ( D)保护继承时基类中的保护成员在派生类中仍是保护成员 6 有如下类声明: class MyBASE int k; public: void set(int n)k=n; int get()constreturn k; ; class MyDERIVED: protected MyBASE protected: int j; public: void set(int m, i
5、nt n)MyBASE: set(m); j=n; int getoconstreturn MyBASE: get()+j; ; 则类 MyDERIVED中保护的数据成员和成员函数的个数是 ( )。 ( A) 4 ( B) 3 ( C) 2 ( D) 1 7 在公有继承的情况下,允许派生类直接访问的基类成员包括 ( )。 ( A)公有成员 ( B)公有成员和保护成员 ( C)公有成员、保护成员和私有成员 ( D)保护成员 8 若有如下类定义: class B void fun1() protected: dOuble varl; public: void fun2() ; class D: p
6、ublic B protected: void fun3() ; 己知 obj是类 D的对象,下列句中不违反类成员访问控制权限的是 ( )。 ( A) obj fun1(); ( B) obj varl; ( C) obj fun2(); ( D) obj fun3(); 9 对于通过公有继承定义的派生类,若其成员函数可以直接访问基类的某个成员,说明该基类成员的访问权限是 ( )。 ( A)公有或私有 ( B)私有 ( C)保护或私有 ( D)公有或保护 10 通过派生类 的对象可直接访问其 ( )。 ( A)公有继承基类的公有成员 ( B)公有继承基类的私有成员 ( C)私有继承基类的公有成
7、员 ( D)私有继承基类的私有成员 11 有如下程序: #include iostrcam using namespace std; class Music public: void setTitle(char* str)strcpy(title, str); protected: Char type10; private: char title20; ; class Jazz: public Music public: void set(char* str) strcpy(type, “Jazz“); strcpy(title, str); ; 下列叙述中正确的是 ( )。 ( A)程序编译
8、正确 ( B)程序编译时语句 出错 ( C)程序编译时语句 出错 ( D)程序编译时语句 和 都出错 12 有如下类定义: class B public: void fun1() private: void fun2() protected: void fun3() ; class D: public B protected: void fun4() ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是 ( )。 ( A) obj fun1(); ( B) obj fun2(); ( C) obj fun3(); ( D) obj fun4(); 13 有如下程序: #includ
9、e iostream using namespace std; class Media public: void Name(); void Show(); protected: int page; ; class Book: private Media public: void Print()cout page endl; void Show()Media: Show(); ; int main() Book Bible; Bible Name(); Bible Print(); Bible Show(); return 0; 编译时有错误的是 ( )。 ( A)语句 ( B)语句 ( C)语
10、句 ( D)语句 14 有如下程序 #include iostream using namespace std; class Base protected: Base()cout A; Base(char c)cout c; ; class Derived: public Base public: Derived(char c)cout c; ; int main() Derived d1(B); return 0; 执行这个程序屏幕上将显示输出 ( )。 ( A) B ( B) BA ( C) AB ( D) BB 15 下列有关继承和派生的叙述中,正确的是 ( )。 ( A)派生类不能访问
11、基类的保护成员 ( B)作为虚基类的类不能被实例化 ( C)派生类应当向基类的构造函数传递参数 ( D)虚函数必须在派生类中重新实现 16 有如下程序: include iostream using namespace std; class AA public: AA()cout 1; ; class BB: public AA int k; public: BB(): k(0)cout 2; BB(int n): k(n)cout 3; ; int main() BB b(4), c; return 0; 运行时的输出结果是 ( )。 ( A) 1312 ( B) 132 ( C) 32 (
12、 D) 1412 17 生成派生类对象时,派生类构造函数调用基类构造函数的条件是 ( )。 ( A)无需任何条件 ( B)基类中显示定义了构造函数 ( C)派生类中显式定义了构造函数 ( D)派生类构造函数明确调用了基类构造函数 18 己知基类 Employee只有一个构造函数,其定义如下: Employee: Employee(int n): id(n) Manager是 Employee的派生类,则下列对 Manager的构造函数的定义中,正确的是 ( )。 ( A) Manager: Manager(int n): id(n) ( B) Manager: Manager(int n)id
13、=n; ( C) Manager: Manager(int n): Employee(n) ( D) Manager: Manager(int n)Employee(n); 19 下列关于虚基类的描述中,错误的是 ( )。 ( A)使用虚基类可以消除由多继承产生的二义性 ( B)构造派生类对象时,虚基类的构造函数只被调用一次 ( C)声明 “class B: virtual publicA”说明类 B为虚基类 ( D)建立派生类对象时,首先调用虚基类的构造函数 20 下列关于虚函数的说明中,正确的是 ( )。 ( A)从虚基类继承的函数都是虚函数 ( B)虚函数不得是静态成员函数 ( C)只能
14、通过指针或引用调用虚函数 ( D)抽象类中的成员函数都 是虚函数 21 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问从基类继承的成员。有如下程序,没有使用多态机制。 #include iostream using namespace std; class Base int a, b; public: Base(int x, int y)a=x; b=y; void show()cout a , b 9ndl; ; class Derived: public Base int c, d; public: Derived(int x, int y, int z, in
15、t m): Base(x, y)c=z; d=m; void show()cout c , d endl; ; int main() Base B1(50, 50), *pb; Derived D1(10, 20, 30, 40); pb=&D1; return 0: return(); 运行时输出的结果是 ( )。 ( A) 10, 20 ( B) 30, 40 ( C) 20, 30 ( D) 50, 50 22 有如下程序; #include iostream using namespace std; class B public: virtual void show()cout “B“
16、; ; class D: public B public: void show()cout “D“; ; void fun1(B *ptr)ptr- show(); void fun2(B &ref)ref show(); void fun3(B b)b show(); int main() B b, *p=new D; D d; fun1(p); fun2(b); fun3(d); return 0; 程序的输出结果是 ( )。 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 23 下列选项中,与实现运行时多态性无关的是 ( )。 ( A)重载函数 ( B)虚函数 (
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 机试 继承 派生 模拟 答案 解析 DOC
