欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    [计算机类试卷]国家二级C++机试(继承和派生)模拟试卷17及答案与解析.doc

    • 资源ID:497751       资源大小:65.50KB        全文页数:25页
    • 资源格式: DOC        下载积分:2000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要2000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机类试卷]国家二级C++机试(继承和派生)模拟试卷17及答案与解析.doc

    1、国家二级 C+机试(继承和派生)模拟试卷 17及答案与解析 一、选择题 1 已知基类 Emp1oyee只有一个构造函数,其定义如下: Emp1oyee:Emp1oyee(int n):id(n) Manager是 Emp1oyee的派生类,则下列对 Manager的构造函数的定义中,正确的是 ( )。 ( A) Manager:Manager(int n):id(n) ( B) Manager:Manager(int n)id=n; ( C) Manager:Manager(int n): Emp1oyee(n) ( D) Manager:Manager(int n)Emp1oyee(n);

    2、2 有如下程序: #incLude iostream using namespace std; c1ass A public: A()cout “A; A()cout C; ; c1ass B:public A public: BOcout G; BOcouK T; ; int main0 B obj; return 0; 运行这个程序的输出结果是 ( )。 ( A) GATC ( B) AGTC ( C) GACT ( D) AGCT 3 有如下程序: #inc1ude iostream using namespace std; c1ass Base public: void fun0 co

    3、ut B; ; c1ass Derived:public Base public: void fun()_cout D; ; int main() Derived d; d f un(); rel:um 0; 若程序的输出结果是 BD,则划线处缺失的部分是 ( )。 ( A) fun(); ( B) Base fun(); ( C) Base:fun(); ( D) Base fun(); 4 下列关于虚基类的描述中,错误的是 ( )。 ( A)使用虚基类可以消除由多继承产生的二义性 ( B)构造派生类对象时,虚基类的构造函数只被调用一次 ( C)声明 “c1ass B: virtual pu

    4、blic A”说明类 B为虚基类 ( D)建立派生类对象时,首先调用虚基类的构造函数 5 有如下程序: #inc1ude iostream using namespace std; c1ass Mountain int height; public: Mountain (int h=0):height(h) virtual char* GetName()constretum“山 ; int GetHeight()constreturn height;) ; c1ass Lushan:public Mountain Public: Lushan(int d):Mountain(d) Char*G

    5、etName()constreturn“庐山 ; ; int main() Mountain *p=new Lushan(1000); cout p GetName() “海拔 “ p GetHeight() “米 “; return0; 运行这个程序的输出结果是 ( )。 ( A)庐山海拔 1000米 ( B)庐山海拔 0米 ( C)山海拔 1000米 ( D)山海拔 0米 6 在 C+中,用于实现运行时多态性的是 ( )。 ( A)内联函数 ( B)重载函数 ( C)模板函数 ( D)虚函数 7 下列关于虚函数的说明中,正确的是 ( )。 ( A)从虚基类继承的函数都是虚函数 ( B)虚函

    6、数不得是静态成员函数 ( C)只能通过指针或引用调用虚函数 ( D)抽象类中的成员函数都是虚函数 8 有如下程序: #inc1ude iostream using namespace std; c1ass Base public: void funl()cout “Basen“; virtual void fun2()cout “Basen“; ; c1ass Derived: public Base public: void fun1()cout “Derivedn“; void fun2()cout “Derivedn“; ; void f(Base b fun2(); int main(

    7、) Derived obj; f(obj); return 0; 执行这个程序的输出结果是 ( )。 ( A) Base Base ( B) Base Derived ( C) Derived Base ( D) Derived Derived 9 有如下程序 #inc1ude iostream using namespace std; c1assA public: virtual void func1()cout “A1“; void func2()cout “A2“; ; c1ass B:public A public: void func1() cout “B1“; void func2

    8、()cout “B2“; ; int main() A*p=newB; p func1(); p func2(); return 0; 运行此程序,屏幕上将显示输出 ( )。 ( A) B1B2 ( B) A1A2 ( C) B1A2 ( D) A1B2 10 如果不使用多态机制,那么通过基类的指针虽然可以指向派生类对象,但是只能访问 从基类继承的成员。有如下程序,没有使用多态机制。 #inc1ude iostream using namespace std; c1ass Base int a,b, public: Base (int x,int y)a=x; b=y; void show()

    9、cout a , b end1; ; c1ass Derived:public Base int c,d; public: Derived (int x,int y,int z,int m):Base(x,y)c=z; d=m;) void show()cout c , d end1;) ; int main() Base B1(50,50),*pb; Derived D1(10,20,30,40); pb= retum0: retum(); 运行时输出的结果是 ( )。 ( A) 10,20 ( B) 30,40 ( C) 20,30 ( D) 50,50 11 虚函数支持多态调用,一个基类

    10、的指针可以指向派生类的对象,而且通过这样的指针调用虚函数时,被调用的是指针所指的实际对象的虚函数。而非虚函数不支持多态调用。 有如下程序: #inc1ude iostream using namespace std; c1ass Base public: virtual void f()cout “f0+“; void g()cout “g0+“; ; c1ass Derived:public Base public: Void g()cont “f+“; void gocout ,“g+“; ; int main Derived d; Base*p= c1ass Base public: v

    11、oid output0 cout 1; virtual void Print0 cout B; ; c1ass Derived:public Base public: void output()cout 2; void Print()cout D; ; int main() Base *ptr=new Derived; ptr output(); ptr Print(); delete ptr; retum 0; 程序的输出结果是 ( )。 ( A) 1B ( B) 1D ( C) 2B ( D) 2D 13 有如下程序; #inc1ude iostream using namespace s

    12、td; c1ass B public: virtualvoidshow()cout “B“; ; c1ass D:public B public: void show()count “D“; ; void funl(B *ptr)ptr show();) void fun2(B void fun3(B b)b show(); int main() B b,*p=new D; D d; fun1(p); fun2(b); fun3(d); retum 0; 程序的输出结果是 ( )。 ( A) BBB ( B) BBD ( C) DBB ( D) DBD 14 下列有关抽象类和纯虚函数的叙述中,

    13、错误的是 ( )。 ( A)拥有纯虚函数的类是抽象类,不能用来定义对象 ( B)抽象类的派生类若不实现纯虚函数,它也是抽象类 ( C)纯虚函数的声明以 “=0; ”结束 ( D)纯虚函数都不能有函数体 15 有如下程 序: #inc1ude iostream using namespace std; c1ass GA public; virtual int f()retuml; ; c1ass GB: public GA public; virtual int f()return 2; ; void show(GAg)cout g f(); void disp1ay(GA int main()

    14、 GA a:show(a); disp1ay(a); GB b:show(b); disp1ay(b); retum 0; 运行时的输出结果是 ( )。 ( A) 1111 ( B) 1211 ( C) 1112 ( D) 1212 16 下列选项中,与实现运行时多态性无关的是 ( )。 ( A)重载函数 ( B)虚函数 ( C)指针 ( D)引用 17 在一个抽象类中,一定包含有 ( )。 ( A)虚函数 ( B) 纯虚函数 ( C)模板函数 ( D)重载函数 18 有如下程序: #inc1ude iostream using namespace std; c1ass A public: v

    15、irtual void f()cout 1; void g0cout 2; ; c1ass B: public A public: Virtual void f()cout 3; void g()cout 4; ; void show(A a g(); int main() B b; show(b); return 0; 运行时的输出结果是 ( )。 ( A) 12 ( B) 34 ( C) 14 ( D) 32 19 有如下程序: #inc1ude iostream using namespace std; c1ass Publication 出版物类 char name30; public

    16、: Publication(char *name=“未知名称 “) strcpy(this name,name); const char*getName()const return name; virtual const char*getType()const return“未知类型 “; ; c1ass Book: public Publication 书类 public: Book(char *name):Publication(name) virtual const char*getType()const return“书 “; ; void showPublication( Publi

    17、cation int main() Book book(“精彩人生 “); showPublication(book); return 0; 运行时的输出结果是 ( )。 ( A)未知类型:未知名称 ( B)未知类型:精彩人生 ( C)书:未知名称 ( D)书:精彩人生 20 下面是类 shape的定义: c1ass Shape public: Virtual void Draw()=0; ; 下列关于 Shape类的描述中,正确的是 ( )。 ( A)类 Shape是虚基类 ( B)类 Shape是抽象类 ( C)类 Shape中的 Draw函数声明有 误 ( D)语句 “Shape s;

    18、”能够建立 Shape的一个对象 s 21 有如下程序: #inc1ude iostream using namespace std; c1ass B public: B(int xx):x(xx)+count;x+=10; virtual void show()const cout count _ x end1; protected: static int count; private: intx; ; c1ass D:public B public: D(int xx,int yy):B(xx),y(yy)+count;y+=100; virtual void show()const co

    19、ut count y end1;) private: int y; ; int B:count =0; int main() B *ptr=new D(10,20); ptr show0; delete ptr; retum 0; 运行时的输出结果是 ( )。 ( A) 1_120 ( B) 2_120 ( C) 1_20 ( D) 2_20 22 有如下程序: #inc1ude iostream using namespace std; c1ass Instrument public: virtual void Disp1ay()=0; ; c1ass Piano: public Instr

    20、ument public: void Disp1ay() *函数体程序略 * ) ; int main() Instrument s; Instrument *p=0; /*; return0; 下列叙述中正确的是 ( )。 ( A)语句 “Insturment *p=0;”编译时出错 ( B)语句 “Instrument s; ”编译时出错 ( C)类 Piano中 的 Disp1ay函数不是虚函数 ( D)类 Instrument是一个虚基类 23 有如下程序: #inc1ude iostream using namespace std; c1ass Book public: Book(c

    21、har*t=“) strcpy(title,t); _ private: char title40; ; c1ass Novel: public Book public: Novel(char*t=“):Book(t) char*Category()const refflm“文学 “; ; int main() Book *pb; pb=new Novel(); cout pb Category(); return0; 若程序运行时输出结果是 “文学 ”,则划线处缺失的语句是 ( )。 ( A) char*Category0; ( B) char* Category()const; ( C)

    22、virtual char* Category()const; ( D) virtualchar* Category()const(); 24 有如下程序: #inc1ude iostream using namespace std; c1ass Base public: virtual void functionl() cout 0; void function2()cout 1; ; c1ass Derived: public Base public: void functionl()cout 2; void function2() cout 3; ; int main() Base*p=

    23、new Derived(); p functionl(); p function2(); return (); ; 运行时的输出结果是 ( )。 ( A) 01 ( B) 21 ( C) 03 ( D) 23 25 有如下程序: #inc1ude iostream using namespace std; c1ass Base public: virtual void Show()cout B; ; c1ass Derived: public Base public: void Show() cout ;D; ; int main() Base *p1=new Derived; Derived

    24、 *p2=new Derived; p1 S1:tow(); p2 Show(); delete p1; delete p2; retum0; 运行这个程序的输出结果是 ( )。 ( A) BB ( B) BD ( C) DB ( D) DD 26 有如下类定义 c1ass Animal public: virtual void Name()=0; ; c1ass Koala:public Animal public: void Name()/*函数体略 */ ; 关于上述类定义,下列描述中错误的是 ( )。 ( A)类 Koala是类 Animal的派生类 ( B)类 Koala中的 Nam

    25、e函数是一个虚函数 ( C)类 Animal中的 Name函数是一个纯虚函数 ( D)语句 “Animal a; ”能够建立类 Animal的一个对象 a 27 有如下程序: #inc1ude iostream using namespace std; c1ass B public: virtual void f()cout “B“; void g()cout “B“; ; c1ass D:public B public: void f()cout “D“; void g()cout “D“; ; void h(B*p)p f();p g(); int main() D obj; h(调用派生

    26、类中的虚函数virtual void f() cout 3;输出 3,调用基类的实函数 void g() cout 2;输出2。所以选项 D为正确答案。 【知识模块】 继承和派生 19 【正确答案】 D 【试题解析】 因为类 Book继承自基类 Publication,所以在类 Book中的虚常成员函数 *getType()retum“书 “; 就会覆盖基类中的虚常成员函数*getType()const return“未知类型 “; ,所以在主函数中调用函数showPublication(book)时, getType()函数的输出的结果是 “书 ”, getName()函数的输出结果为 “精

    27、彩人生 ”。 【知识模块】 继承和派生 20 【正确答案】 B 【试题解析】 因为类 Shape中包含纯虚函数 Draw(),所以类 Shape是抽象类。 【知识模块】 继承和派生 21 【正确答案】 B 【试题解析】 在主函数中定义了一个基类 B的指针变量 ptr,并调用类 D的构造函数创建了类 D的实例对象,因为变量 count是全局变量所以在调用基类 B的构造函数给其值加 1,在调用 D的构造函数时给其值加 1,因而输出其值等于 2,在类 D的构造函数中给成员变量 y的值加 100,所以其等于 120并输出。 【知识模块】 继承和派生 22 【正确答案】 B 【试题解析】 由于函数 Di

    28、sp1ay()是一个纯虚函数,所以类 Instrument是抽象类,而抽象类是不能定义对象的,因而选项 B)为正确选项。 【知识模块】 继承和派生 23 【正确答案】 D 【试题解析】 根据程序运行的结果为:文学,说明程序执行了派生类 Novel中的成员函数 *Category()Oconst return“文学 “; ,所以在基类 Book中要把函数*Category()const定义为纯虚函数。 【知识模块】 继承和派生 24 【正确答案】 B 【试题解析】 函数 functionl()在基类 Base中定义为虚成员函数,而在派生类Dervied中重新进行了定义,输出字符 2,函数 fun

    29、ction2()在基类 Base中定义虚成员函数,在主函数中使用指向基类的指针变量 p访问 function20时,输出 1。 【知识模块】 继承和派生 25 【正确答案】 D 【试题解析】 在基 类 Base中定义了虚函数 Show()输出字符 B,而在派生类Derived中对虚函数 Show()进行了重新定义,输出字符 D。在主函数中对基类和派生类中的虚函数 Show0进行了多态调用,此时调用的是派生类中重新定义的Show(),输出字符 D。 【知识模块】 继承和派生 26 【正确答案】 D 【试题解析】 在类 Animal定义了纯虚函数 Name(),所以类 Animal就是一个抽象类,而抽象类是不能够建立对象的。 【知识模块】 继承和派生 27 【正确答案】 D 【试题 解析】 在基类 B中定义虚函数 f()和成员函数 g(),而在派生类 D中定义了函数 f0和同名函数 g()。而函数 h中的形参为指向基类的指针变量 p,所以在主函数中执行 h(&obj)时,会调用派生类的函数 f(),输出 D,再调用基类的函数 g(),输出 B。 【知识模块】 继承和派生


    注意事项

    本文([计算机类试卷]国家二级C++机试(继承和派生)模拟试卷17及答案与解析.doc)为本站会员(dealItalian200)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

    收起
    展开