【计算机类职业资格】国家二级C++机试(继承和派生)模拟试卷16及答案解析.doc
《【计算机类职业资格】国家二级C++机试(继承和派生)模拟试卷16及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】国家二级C++机试(继承和派生)模拟试卷16及答案解析.doc(10页珍藏版)》请在麦多课文档分享上搜索。
1、国家二级 C+机试(继承和派生)模拟试卷 16及答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。(分数:2.00)A.派生类、成员对象类、基类B.成员对象类、基类、派生类C.基类、成员对象类、派生类D.基类、派生类、成员对象类2.有如下类定义和变量定义: c1ass Parents public: int publicData; private: int privateData; );c1ass ChildA:public Parents*类体略*; c1ass ChildB:p
2、rivate Parents*类体略*; ChildA a; ChildB b; 下列语句中正确的是( )。(分数:2.00)A.coutapublicDataend1;B.coutaprivateDataend1;C.coutbpublicDataend1;D.coutbprivateDataend1;3.通过派生类的对象可直接访问其( )。(分数:2.00)A.公有继承基类的公有成员B.公有继承基类的私有成员C.私有继承基类的公有成员D.私有继承基类的私有成员4.有如下程序: #inc1udeiostream using namespace std; c1ass AA int k; pro
3、tected: int n; void setK(int k)thisk=k; public: void setN(int n)thisn=n; ; c1ass BB: public AA*类体略*; int main() BB X; xri=1; /1 xsetN(2); /2 xk=3; /3 xsetK(4); /4 return 0; 在标注号码的四条语句中正确的是( )。(分数:2.00)A.1B.2C.3D.45.有如下两个类定义 c1ass XX private: double x1; protected: double x2; public: double x3; ;c1ass
4、 YY: protected XX private: double y1; potected: double y2; public: double y3; ; 在类 YY中保护成员变量的个数是( )。(分数:2.00)A.1B.2C.3D.46.有如下程序: #inc1udeiostream using namespace std; c1ass Music public: void setTitle(char* str) strcpy(title, str); protected: char type10; private: char title20; ;c1ass Jazz: public
5、Music public: void set(char* str) strcpy(type,Jazz); slrcpy(title,str); ; 下列叙述中正确的是( )。(分数:2.00)A.程序编译正确B.程序编译时语句出错C.程序编译时语句出错D.程序编译时语句和都出错7.当派生类从一个基类保护继承时,基类中的一些成员在派生类中成为保护成员,这些成员在基类中原有的访问属性是( )。(分数:2.00)A.任何B.公有或保护C.保护或私有D.私有8.下列关于派生类和基类的描述中,正确的是( )。(分数:2.00)A.派生类成员函数只能访问基类的公有成员B.派生类成员函数只能访问基类的公有和
6、保护成员C.派生类成员函数可以访问基类的所有成员D.派生类对基类的默认继承方式是公有继承9.有如下类定义: c1ass B public: void fun1() private: void fun2() protected: void fun3() ; c1ass D:public B protected: void fun40 ; 若 obj是类 D的对象,则下列语句中不违反访问控制权限的是( )。(分数:2.00)A.objfunl();B.objfun2();C.objfun3();D.objfun4();10.有如下程序: c1ass Base public: int data; ;
7、 c1ass Derivedl:public Base; c1ass Derived2: protected Base; int main() Derivedl d1; Derived2 d2; dldata=0; d2data=0; return 0; 下列关于程序编译结果的描述中,正确的是( )。(分数:2.00)A.皆无编译错误B.有编泽错误,无编译错误C.无编译错误,有编译错误D.皆有编译错误11.有如下程序: #inc1udeiostream using namespace std; c1ass XX int x; public: XX(int xx=0):x(xx) int get
8、X()return x;) ; c1ass YY: public XX int y; public: YY(int xx, int yy):XX(xx),y(yy) int getV()retum getX()+y; ; int main() YY c(3,4); coutcgetV()+cgetXOend1; return 0; 运行这个程序的输出结果是( )。(分数:2.00)A.3B.4C.7D.1012.有如下程序: #inc1udeiostream using namespace std; c1ass Media public: void Name(); void Show(); p
9、rotected: int page; ; c1ass Book: private Media public: void Print() coutpageend1; void Show0Media:Show0;)/ ; int rruun() Book Bible; BibleName();,/ BiblePrint();/ BibleShow();/ retum (); 编译时有错误的是( )。(分数:2.00)A.语句B.语句C.语句D.语句13.有如下程序: #inc1ude iostream using namespace std; c1ass A public: AOcoutA“;
10、;c1assB public:BO cout“B“; c1assC:public A B b; public: C()cout“C“; ; int main0Cobj;retum 0; 执行后的输出结果是( )。(分数:2.00)A.CBAB.BACC.ACBD.ABC14.有如下程序: #iinc1ude iostream us:ing namespace std; c1assA public: AOcout“A“; AOcout“A“; ; c1ass B:public A A*p; public: B()cout“B“;p=new A(); B()cout“B“;delete p; ;
11、int main() B obj; return (); 执行这个程序的输出结果是( )。(分数:2.00)A.BAAABAB.ABABAAC.BAABAAD.ABAABA15.有如下程序 #inc1udeiostream using namespace std; c1ass Base protected: Base()coutA; Base(charc)coutc; ; c1ass Derived: public Base public: Derived( char c)coutc,) ; int main() Derived dl(B); return0; 执行这个程序屏幕上将显示输出(
12、)。(分数:2.00)A.BB.BAC.ABD.BB16.在一个派生类对象结束其生命周期时( )。(分数:2.00)A.先调用派生类的析构函数后调用基类的析构函数B.先调用基类的析构函数后调用派生类的析构函数C.如果基类没有定义析构函数,则只调用派生类的析构函数D.如果派生类没有定义析构函数,则只调用基类的析构函数17.下列关于派生类构造函数和析构函数的说法中,错误的是( )。(分数:2.00)A.派生类的构造函数会隐含调用基类的构造函数B.如果基类中没有缺省构造函数,那么派生类必须定义构造函数C.茬建立派生类对象时,先调用基类的构造函数,再调用派生类的构造函数D.在销毁派生类对象时,先调用基
13、类的析构函数,再调用派生类的析构函数18.下列有关继承和派生的叙述中,正确的是( )。(分数:2.00)A.派生类不能访问基类的保护成员B.作为虚基类的类不能被实例化C.派生类应当向基类的构造函数传递参数D.虚函数必须在派生类中重新实现19.有如下程序: #inc1udeiostream using namespace std; c1assA public: A(int i)x=i;) void dispa()coutx,; private: int x; ; c1ass B:public A public: B(int i):A(i+10)x=i;) void dispb()dispa();
14、coutx end1; private int x; ; int main() B b(2); bdispb(); retum 0; 运行时输出的结果是( )。(分数:2.00)A.10,2B.12,10C.12,2D.2,220.有如下程序: #inc1udeiostream using namespace std; c1ass Base int x: public; Baseint w=0; x(n)coutn; Int getX()const return x; ; c1ass Derived public Base int y; public; Derived(int m, int n
15、): y(m), Base(n)coutm, Derived(int m): y(m)coutm;) ; int main() Derived d1(3), d2(5,7); Retum 0; 运行时的输出结果是( )。(分数:2.00)A.375B.357C.0375D.035721.有如下程序: #inc1ude iostream using namespace std; c1ass AA public: AAO cout1; ; c1ass BB: public AA int k; public: BB():k(0)cout2; BB(intn):k(n) cout3; ; int ma
16、in0 BB b(4),c; return 0; 运行时的输出结果是( )。(分数:2.00)A.1312B.132C.32D.141222.有如下程序: #inc1ude iostream using namespace std; c1ass C1 public: C10 cout1; ; c1ass C2: public C1 public: C2() cout2; ; int main() C2 cb2; C1 *cb1; return 0; 运行时的输出结果是( )。(分数:2.00)A.121B.21C.211D.1223.有如下程序: #inc1ude iostream using
17、 namespace std; c1ass Base public: Base(int x=0):valB(x)coutva1B, Base()coutvalB,) private: int vaIB; ; c1ass Derived:public Base public: Derived(int x=0,int y=0):Base(x),vaID(y)coutva1D, Derived0 coutvalD; private: int vaID; ; int main() Derived obj12(2,3); retum0; 运行时的输出结果是( )。(分数:2.00)A.2332B.232
18、3C.3232D.322324.生成派生类对象时,派生类构造函数调用基类构造函数的条件是( )。(分数:2.00)A.无需任何条件B.基类中显示定义了构造函数C.派生类中显式定义了构造函数D.派生类构造函数明确调用了基类构造函数25.有如下类定义: c1ass AA int a; public: AA(intn=0):a(n) ; c1ass BB:public AA public: BB(int n)_ ; 其中横线处缺失部分是( )。(分数:2.00)A.:n)B.:AA(n)C.a(n);D.a=n;26.有如下程序: #inc1ude iostream using namespace
19、std; c1ass Basel public: Basel(int d) coutd;) Base1() ; c1ass Base2 public: Base2(int d) coutd; Base2() ; c1ass Derived: public Basel, Base2 public: Derived (int a,int b,int c,int d); Basel(b), Base2(a), bl(d), b2(c) Private: int b1; int b2; ; int main() Derived d(1,2,3,4); return 0; 运行时的输出结果是( )。(分
20、数:2.00)A.1234B.2134C.12D.21国家二级 C+机试(继承和派生)模拟试卷 16答案解析(总分:52.00,做题时间:90 分钟)一、选择题(总题数:26,分数:52.00)1.建立一个有成员对象的派生类对象时,各构造函数体的执行次序为( )。(分数:2.00)A.派生类、成员对象类、基类B.成员对象类、基类、派生类C.基类、成员对象类、派生类 D.基类、派生类、成员对象类解析:解析:建立派生类对象的时候,构造函数的执行顺序如下:执行基类的构造函数,调用的顺序按照基类被继承时候的顺序(自左向右)。然后是执行成员对象的构造函数,调用顺序按照各个成员对象在类中的声明顺序(自上而
21、下),最后是执行派生类的构造函数。2.有如下类定义和变量定义: c1ass Parents public: int publicData; private: int privateData; );c1ass ChildA:public Parents*类体略*; c1ass ChildB:private Parents*类体略*; ChildA a; ChildB b; 下列语句中正确的是( )。(分数:2.00)A.coutapublicDataend1; B.coutaprivateDataend1;C.coutbpublicDataend1;D.coutbprivateDataend1;
22、解析:解析:基类 Parents的私有成员 privateData在派生类 ChildA和 ChildB中是不可以访问,所以选项 B、D 是错误,而派生类 ChildB私有继承基类 Parents,所以基类 Parents的公有成员 publicData在派生类 ChildB中变为私有成员,只能在派生类 ChildB内部访问,因而选项 C是错误的。派生类 ChildA公有继承基类 Parents,所以基类 Parents的公有成员 publicData在派生类 ChildA中可以访问。3.通过派生类的对象可直接访问其( )。(分数:2.00)A.公有继承基类的公有成员 B.公有继承基类的私有成
23、员C.私有继承基类的公有成员D.私有继承基类的私有成员解析:解析:基类的私有成员在派生类中都是不能访问的,所以选项 B、D 是错误的,基类的公有成员通过私有继承后,在派生类中变为了私有成员,只能在派生类中进行访问,而通过派生类的对象不能访问,所以选项 c也是错误的。基类的公有成员通过公有继承后,在派生类中是公有成员,所以可以通过派生对象来访问。4.有如下程序: #inc1udeiostream using namespace std; c1ass AA int k; protected: int n; void setK(int k)thisk=k; public: void setN(int
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 国家 二级 机试 继承 派生 模拟 试卷 16 答案 解析 DOC
