[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷3及答案与解析.doc
《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷3及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]国家二级C++机试(继承和派生)模拟试卷3及答案与解析.doc(24页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C+机试(继承和派生)模拟试卷 3及答案与解析 一、选择题 1 有如下类声明: class XA int x; public: XA(int n)x=n; ; class XB: public XA int y; public: XB(int a, int b); ; 在构造函数 XB的下列定义中,正确的是 ( )。 ( A) XB: XB(int a, int b): x(a), y(b) ( B) XB: XB(int a, intb): xA(a), y(b) ( C) XB: XB(int a, int b): x(a), XB(b) ( D) XB: XB(int a, i
2、nt b): XA(a), XB(b) 2 下列有关类继承的叙述中,错误的是 ( )。 ( A)继承可以实现软件复用 ( B)虚基类可以解决由多继承产生的二义性问题 ( C)派生类构造函数要负责调用基类的构造函数 ( D)派生类没有继承基类的私有成员 3 定义派生类时,若不使用关键字显式地规定采用何种继承方式,则默认方式为( )。 ( A)私有继承 ( B)非私有继承 ( C)保护继承 ( D)公有继承 4 下列关于继承方式的描述中,错误的是 ( )。 ( A)如果不显式地指定继承方式,缺省的继承方式是私有 (private) ( B)采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成
3、员 ( C)采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员 ( D)采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员 5 若已定义了类 Vehicle,则下列派生类定义中;错误的是 ( )。 ( A) class Car: vehicle *类体略 * ; ( B) class Car: public car *类体略 * ; ( C) class Car: public Vehicle *类体略 * ; ( D) class Car: virtual public Vehicle *类体略 * ; 6 下列关于派生类的叙述中,错误的是 ( )。 ( A)派生类至少要
4、有一个基类 ( B)派生类中包括了从基类继承的成员 ( C)一个派生类可以作为另一个派生类的基类 ( D)基类成员被派生类继承以后访问权限保持不变 7 有如下程序: #include iostream using namespace std; class Base private: void fun1() constcout “fun1“; protected: void fun2() constcout “fun2“; public: void fun3() constcout “fun3“; ; class Derived: protected Base public: void fun4
5、() corotcout “fun4“; ; int main() Derived obj; obj fun4(); obj fun2(); obj fun3(); obj fun4(); return 0; 其中有语法错误的语句是 ( )。 ( A) ( B) ( C) ( D) 8 派生类的成员函数不能访问基类的 ( )。 ( A)公有成员和保护成员 ( B)公有成员 ( C)私有成员 ( D)保护成员 9 在一个派生类的成员函数中,试图调用其基类的成员函数 “void f(); ”,但无法通过编译。这说明 ( )。 ( A) f()是基类的私有成员 ( B) f()是基类的保护成员 (
6、C)派生类的继承方式为私有 ( D)派生类的继承方式为保护 10 有如下类定义和变量定义: class Parems public: int publicData; private: int privateData; ; class ChildA: public Parents *类体略 * ; class ChildB: private Parents *类体略 * ; ChildA a; ChildB b; 下列语句中正确的是 ( )。 ( A) cout a publicData endl; ( B) cout a privateData endl; ( C) cout b public
7、Data endl; ( D) cout b privateData endl; 11 有如下两个类定义 class xx private: dOuble x1; protected: double x2; public: double x3; ; class YY: protected XX private: double y1; potected: double y2; public: double y3; ; 在类 YY中保护成员变量的个数是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 12 下列关于派生类和基类的描述中,正确的是 ( )。 ( A)派生类成员函数只
8、能访问基类的公有成员 ( B)派生类成员函数只能访问基类的公有和保护成员 ( C)派生类成员函数可以访问基类的所有成员 ( D)派生类对基类的默认继承方式是公有继承 13 有如下程序: #include iostream using namespace std; class XX int x; public: 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
9、main() YY c(3, 4); cout c getV()+c getX() endl; return 0; 运行这个 程序的输出结果是 ( )。 ( A) 3 ( B) 4 ( C) 7 ( D) 10 14 有如下程序: #include iostream using namespace std; class A public: A()cout “A“; A()cout “ A“; ; class B: public A A* p; public: B()cout “B“; p=new A(); B()cout “ B“; deletep; ; int main() B obj; r
10、eturn 0; 执行这个程序的输出结果是 ( )。 ( A) BAA B A ( B) ABA B A A ( C) BAA B A A ( D) ABA A B A 15 下列关于派生类构造函数和析构函数的说法中,错误的是 ( )。 ( A)派生类的构造函数会隐含调用基类的构造函数 ( B)如果基类中没有缺省构造函数,那么派生类必须定义构造函数 ( C)在建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数 ( D)在销毁派生类对象时,先调用基类的析构函数,再调用派生类的析构函数 16 有如下程序: #include iostream using namespace std; c
11、lass Base int x; public; Baseint n=0); x(n)cout n; Int getX()constreturn x; ; class Derived public Base int y; public; Derived(int m, int n): y(m), Base(n)cout m; Derived(int m): y(m)cout m; ; int main() Derived d1(3), d2(5, 7); Return 0; 运行时的输出结果是 ( )。 ( A) 375 ( B) 357 ( C) 0375 ( D) 0357 17 有如下程序
12、: #include iostream using namespace std; class Base public: Base(int x=0): valB(x)cout valB; Base()cout valB; ) private: int valB; ; class Derived: public Base public: Derived(int x=0, int y=0): Base(x), valD(y)cout valD; Derived()cout valD; private: int valD; ; int main() Derived obj12(2, 3); retur
13、n 0; 运行时的输出结果是 ( )。 ( A) 2332 ( B) 2323 ( C) 3232 ( D) 3223 18 有如下程序: #include iostream using namespace std; class Basel public: Base1(int d)cout d; Base1() ; class Base2 public: Base2(int d)cout d; Base2() ; class Derived: public Base1, Base2 public: Derived(int a, int bint c, int d); Base1(b), Bas
14、e2(a), b1(d), b2(c) Private: int b1; int b2; ; int main() Derived d(1, 2, 3, 4); return 0; 运行时的输出结果是 ( )。 ( A) 1234 ( B) 2134 ( C) 12 ( D) 21 19 有如下程序: #include iostream using namespace std; class Base public: void fun()cout B; ; class Derived: public Base public: void fun()_cout D; ; int main() Der
15、ived d; d fun(); return 0; 若程序的输出结果是 BD,则划线处缺失的部分是 ( )。 ( A) fun(); ( B) Base fun(); ( C) Base: fun(); ( D) Base- fun(); 20 在 C+中,用于实现运行时多态性的是 ( )。 ( A)内联函数 ( B)重载函数 ( C)模板函数 ( D)虚函数 21 有如下程序 #include iostream using namespace std; class A public: virtual void func1()cout “A1“; void func2()cout “A2“;
16、 ; class B: public A public: void func1()cout “B1“; void func2()cout “B2“; ; int main() A *p-new B; p- func1(); p- func2(); return 0; 运行此程序,屏幕上将显示输出 ( )。 ( A) B1B2 ( B) A1A2 ( C) B1A2 ( D) A1B2 22 有如下程序; #include iostream using namespace std; class Base public: void output()cout 1; virtual void Prin
17、t()cout B; ; class Derived: public Base public: void output()cout 2; void Print()cout D; ; int main() Base *ptr=new Derived; ptr- output(); ptr- Print(); delete ptr; return 0; 程序的输出结果是 ( )。 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 23 有如下程序: #include iostrearn using namespace std; class GA public; virtual int
18、 f()return 1; ; class GB: public GA publiC; virtual int f()return 2; ; void show(GA g)cout g f(); void display(GA &g)cout g f(); int main() GA a: show(a); display(a); GB b: show(b); display(b); return 0; 运行时的输出结果是 ( )。 ( A) 1111 ( B) 1211 ( C) 1112 ( D) 1212 24 有如下程序: #include iostream using namespa
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 国家 二级 机试 继承 派生 模拟 答案 解析 DOC
