C++习题3(继承和多态)_第1页
C++习题3(继承和多态)_第2页
C++习题3(继承和多态)_第3页
C++习题3(继承和多态)_第4页
C++习题3(继承和多态)_第5页
免费预览已结束,剩余7页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题3一、选择题1.在C+中,类与类之间的继承关系具有( C )A)自反性 B)对称性 C)传递性 D)反对称性2.在公有继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( B )A)受限制 B)保持不变 C)受保护 D)不受保护3.按解释中的要求在下列程序划线处填入的正确语句是:( C )#include class Basepublic:void fun()coutBase:funendl;class Derived:public Basepublic:void fun() /在此空格处调用基类的函数fun()coutDerived:funfun();4.在保护继承的情况下,基类的成员(私有的除外)在派生类中的访问权限( C )A)受限制 B)保持不变 C)受保护 D)不受保护5在哪种派生方式中,派生类可以访问基类中的protected成员(B )A)public和private B)public、protected和private C)protected和private D)仅protected6.当一个派生类仅有protected继承一个基类时,基类中的所有公有成员成为派生类的(C)A) public成员 B) private成员 C) protected成员 D) 友元7.不论派生类以何种方法继承基类,都不能使用基类的(B )A) public成员 B) private成员 C) protected成员 D) public成员和protected成员8下面叙述错误的是(S )。 A)基类的protected成员在派生类中仍然是protected的 B)基类的protected成员在public派生类中仍然是protected的 C)基类的protected成员在private派生类中是private的 D)基类的protected成员不能被派生类的对象访问 9.下列说法中错误的是(S )。 A) 保护继承时基类中的public成员在派生类中仍是public的 B)公有继承时基类中的private成员在派生类中仍是private的 C)私有继承时基类中的public成员在派生类中是private的 D)保护继承时基类中的public成员在派生类中是protected的10下面叙述错误的是( C)。 A)派生类可以使用private派生 B)对基类成员的访问必须是无二义性的 C)基类成员的访问能力在派生类中维持不变 D)赋值兼容规则也适用于多继承的组合 11派生类的构造函数的成员初始化列表中,不能包含(C )。 A)基类的构造函数 B)派生类中子对象的初始化 C)基类中子对象的初始化 D)派生类中一般数据成员的初始化 12.下列虚基类的声明中,正确的是:( B )A)class virtual B: public A B)class B: virtual public A C)class B: public A virtual D)virtual class B: public A13. .实现运行时的多态性采用( D )A)重载函数 B)构造函数 C)析构函数 D)虚函数14.若一个类中含有纯虚函数,则该类称为(D )A) 基类 B) 纯基类 C) 派生类 D) 抽象类15.假设A为抽象类,下列声明( B)是正确的A) A fun(int); B) A *p; C) int fun(A); D) A Obj;16.在派生类中,重载一个虚函数时,要求函数名、参数的个数、参数的类型、参数的顺序和函数的返回值(B )A) 不同 B) 相同 C) 相容 D) 部分相同17.下面函数原型声明中,(C)声明了fun为普通虚函数A) void fun()=0; B) virtual void fun()=0; C) virtual void fun(); D) virtual void fun();18.在下面四个选项中, (A)是用来声明虚函数的。 A)virtual B)public C)using D)false 19.实现运行时的多态性要使用(D)。 A)重载函数 B)构造函数 C)析构函数 D)虚函数 20.关于虚函数的描述中,正确的是(D)。 A)虚函数是一个静态成员函数 B)虚函数是一个非成员函数 C)虚函数既可以在函数说明时定义,也可以在函数实现时定义 D)派生类的虚函数与基类中对应的虚函数具有相同的参数个数和类型 二、填空题:1.派生类对基类的继承有三种方式:_public_ _、_protected_ _ 和_private_ _。 2.如果类Alpha继承了类Beta,则类Alpha称为_派生 _类,类Beta称为_基 _类。3. 设置虚基类的目的是为了消除二义性,可通过_virtual标识虚基类。4. 类继承中,缺省的继承方式是_ private _。 5. 当用protected继承从基类派生个类时,基类的public成员成为派生类的_ protected _成员,protected成员成为派生类的_ protected _ _成员。 6指向基类的对象的指针变量也可以指向_公有派生类的对象。 三、程序题1. 继承的工作方式,完成以下代码。要求:(1)处继承方式为共有继承public,(2)处填写基类的ai,(3)处填写派生类的bi,(4)对象b的数据成员有哪些?ai,bi#include#includeclass Apublic:A()ai=1;protected:int ai;class B: _ Apublic:B()bi=2;void display()cout_(2)_ _(3)_endl;private:int bi;int main()B b;b.display();2. 派生类的构造。派生类的构造总是由基类的初始化开始的。填写代码,完成基类的初始化。并且要求屏幕输出效果是:#includeclass Apublic:A(int i)x=i; coutCA:xendl;A()coutDAendl;private:int x;class B:public Apublic:B():_A(90)_y=0;coutCBendl;B()coutDBendl;private:int y;int main()B b;3. 填写初始化列表,完成以下程序,使得屏幕输出:#includeclass Apublic:A(int i)x=i; coutxendl;private:int x;class Dpublic:D(int i)m=i;coutmendl;private:int m;class B:public Apublic:B():_A(90),d(19)y=0;private:int y;D d;int main()B b;4. 请问以下程序输出什么?#includeclass Apublic:A(int i)x=i;int x;class B:public Apublic:B(int i):A(i+1)y=i;int y;void f1(A & ra)coutra.xendl;void f2(A * pa)coutxendl;int main()B b(3);f1(b);f2(&b);4答案:5. 请问以下程序输出什么?#includeclass Apublic:void display()coutAendl;class B:public Apublic:void display()coutBendl;void f(A &r)r.display();int main()B b;f(b);A a;f(a);5. 答案:6. 多态性,虚函数。请问以下程序输出什么?#includeclass Apublic:virtual void display()coutAendl;class B:public Apublic:virtual void display()coutBendl;void f(A &r)r.display();int main()B b;f(b);A a;f(a);6.答案:7. 请问以下程序输出什么?#includeclass Apublic:virtual void display()coutAendl;class B:public Apublic:virtual void display()coutBendl;class C:public Apublic:virtual void display()coutCendl;int main()A a,aa;B b;C c,cc,ccc;A *pa6=&a,&aa,&b,&c,&cc,&ccc;int i=0;for(i=0;idisplay();答案:8. 以下程序的屏幕输出是:。为何以下程序的屏幕输出中会输出DA呢?请说明。#includeclass Apublic:A()coutDA ;class B:public Apublic:B()coutDB ;int main()B b;答案:定义类B对象b时,先调用基类A的构造函数,再调用派生类类B的构造函数。析构时正好相反,先析构B类,再析构A类。1答案:(1)public (2)ai (3)bi (4)ai、bi2.答案:A(90)3.答案:A(90),d(19)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论