




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计习题班级: 网络1412 学号: 143213600216 姓名: 张丽 名单序号: 成绩: 第3章 继承与派生一、选择题(共28分,每题1分)1下列对派生类的描述中,( D )是错误的。A 一个派生类可以作为另一个派生类的基类B 派生类至少有一个基类C 派生类的成员除了它自己的成员外,还包含了它的基类成员D 派生类中继承的基类成员的访问权限到派生类保持不变2派生类的对象对它的哪一类基类成员是可以访问的?( A )A公有继承的基类的公有成员 B. 公有继承的基类的保护成员C. 公有继承的基类的私有成员 D. 保护继承的基类的公有成员3关于多继承二义性的描述,( D )是错误的。A 派生类的多个基类中存在同名成员时,派生类对这个成员访问可能出现二义性B 一个派生类是从具有共同的间接基类的两个基类派生来的,派生类对该公共基类的访问可能出现二义性C 解决二义性最常用的方法是作用域运算符对成员进行限定D 派生类和它的基类中出现同名函数时,将可能出现二义性4多继承派生类构造函数构造对象时,( B )被最先调用。A派生类自己的构造函数 B虚基类的构造函数C非虚基类的构造函数 D派生类中子对象类的构造函数5C+类体系中,能被派生类继承的是( B )。A构造函数 B虚函数 C析构函数 D友元函数6设有基类定义: class Cbase private: int a; protected: int b; public: int c;派生类采用何种继承方式可以使成员变量b成为自己的私有成员( A )A. 私有继承 B.保护继承C. 公有继承 D.私有、保护、公有均可7C+中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过( B )派生了新的类。 A.复用 B.继承 C.封装 D.引用8继承具有( B ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。 A.规律性 B.传递性 C.重复性 D.多样性9下列对基类和派生类关系的描述中,错误的是( C )。A.派生类是基类的具体化 B.派生类是基类的子集C.派生类是基类定义的延续 D.派生类是基类的组合10下列对派生类的描述中,错误的是( C )。A. 一个派生类可以作为另一个派生类的基类B. 派生类至少有一个基类C. 派生类的缺省继承方式是privateD. 派生类只含有基类的公有成员和保护成员11下列对继承的描述中,错误的是( D )。A. 析构函数不能被继承B. 派生类也是基类的组合C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员D. 派生类中继承的基类成员的访问权限到派生类保持不变12派生类的对象对它的基类成员中( A )是可以访问的。A.公有继承的公有成员 B.公有继承的私有成员C.公有继承的保护成员 D.私有继承的公有成员13下列说法错误的是( B )。A. 公有继承的基类中的public成员在派生类中仍是public的B. 公有继承的基类中的private成员在派生类中仍是private的C. 私有继承的基类中的public成员在派生类中变成private的D. 保护继承的基类中的public成员在派生类中变成protected的14下面叙述错误的是( A )。A. 基类的protected成员在派生类中仍然是protectedB. 基类的protected成员在public派生类中仍然是protected的C. 基类的protected成员在private派生类中是private的D. D. 基类的protected成员不能被派生类的对象访问15C+类体系中,不能被派生类继承的有( A )。A.构造函数 B.虚函数 C.静态成员函数 D.赋值操作函数16设置虚函数的声明中,正确的是( B )。A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代码17下列虚基类的声明中,正确的是( D )。A.class virtual B:public A B.virtual class B:public AC.class B:public A virtual D.class B: virtual public A 18在下面的表达式中,不表示虚继承的是( C )。A.virtual public B.public virtual C.public D. virtual 19C+中的类有两种用法:一种是类的实例化,即生成类对象,并参与系统的运行;另一种是通过( B )派生了新的类。A.复用 B.继承 C.封装 D.引用20继承具有( B ),即当基类本身也是某一个类派生类时,底层的派生类也会自动继承间接基类的成员。A.规律性 B.传递性 C.重复性 D.多样性21下列对继承的描述中,错误的是( D )。A. 析构函数不能被继承B. 派生类也是基类的组合C. 派生类的成员除了它自己的成员外,还包含了它的基类的成员D. 派生类中继承的基类成员的访问权限到派生类保持不变22派生类的对象对它的基类成员中( A )是可以访问的。 A.公有继承的公有成员 B.公有继承的私有成员 C.公有继承的保护成员 D.私有继承的公有成员23下面叙述错误的是( A )。A. 基类的protected成员在派生类中仍然是protectedB. 基类的protected成员在public派生类中仍然是protected的C. 基类的protected成员在private派生类中是private的D. 基类的protected成员不能被派生类的对象访问24设置虚函数的声明中,正确的是( B )。A.简化程序 B.消除二义性 C.提高运行效率 D.减少目标代码25下列虚基类的声明中,正确的是( D )。A.class virtual B:public A B.virtual class B:public AC.class B:public A virtual D.class B: virtual public A26若要用派生类的对象访问基类的保护成员,以下观点正确的是( D ) A. 不可能实现 B. 可采用保护继承 C. 可采用私有继承 D. 可采用公有继承27 设有基类定义: class base private: int a; protected: int b; public: int c;派生类采用何种继承方式可以使成员变量c能被派生类的对象访问( C )A. 私有继承 B.保护继承C. 公有继承 D.私有、保护、公有均可28下列虚基类的声明中,正确的是( D )。 Aclass virtual B:public A Bvirtual class B:public ACclass B:public A virtual Dclass B: virtual public A二、填空题(共23分,每空1分)1C+将类继承分为 单继承 和 多继承 两种。2派生类可以定义其_基类_中不具备的数据和操作。3派生类构造函数的初始化列表中包含_基类构造函数_子类构造函数_。4在继承机制下,当对象消亡时,编译系统先执行 派生类 的析构函数,然后才执行 子类 的析构函数,最后执行 基类 的析构函数。5设有以下类的定义:class A class B: protected A class C: private B int A1; int b1; int c1;protected: int A2; protected: int b2; protected: int c2;public: int A3; public: int b3; public: int c3; ; ;请按访问权限写出派生类C中具有的成员。私有成员: a1 a2 a3 b1 b2 b3 保护成员: c2 公有成员: c3 。6生成一个派生类对象时,先调用 基类 的构造函数,然后调用 派生类 的构造函数。7继承发生在利用现有类派生新类时,其中 现有类 称为基类,或 父类 类; 新类 称为派生类,或 子 类。8在继承关系中, 派生类继承多个基类 称为多重继承, 派生类继承派生类 称为多层继承。9在公有继承关系下,派生类的对象可以访问基类中的 public 成员,派生类的成员函数可以访问基类中的 public和protected 成员。10在保护继承关系下,基类的公有成员和保护成员将成为派生类中的 保护 成员,它们只能由派生类的 成员函数 来访问;基类的私有成员将成为派生类中的 不可见 成员。三、改错题(共6分,每题3分)1指出并改正下面程序中的错误。#includeclass Point int x,y; public: Point(int a=0,int b=0) x=a; y=b; void move(int xoffset,int yoffset) x+=xoffset; y+=yoffset; int getx() return x; int gety() return y;class Rectangle:protected Point int length,width; public: Rectangle(int x,int y,int l,int w):Point(x,y) length=l;width=w; int getlength()return length; int getwidth()return width;void main() Rectangle r(0,0,8,4); r.move(23,56);coutr.getx(),r.gety(),r.getlength(),r.getwidth()endl;修改:class Rectangle:protected Point 改为class Rectangle:public Point2#includeclass A public: int x; A(int a=0) x=a; void display() coutA.x=xendl; ;class B public: int x; B(int a=0) x=a; void display() coutB.x=xendl; ;class C:public A,public B int y; public: C(int a,int b,int c) :A(a),B(b) y=c; int gety() return y; ;void main() C myc(1,2,3); myc.x=10; myc.display();修改:myc.x=10; 修改为myc.B:x=10;或myc.A:x=10; myc.display(); 修改为myc.B:display(); 或myc.A:display();四、看程序写结果(共16分,每题4分)1#include class Base int i; public: Base(int n)cout Constucting base class endl;i=n; Base()cout Destructing base class endl; void showi()cout i ,; int Geti()return i; ;class Derived:public Base int j; Base aa; public: Derived(int n,int m,int p):Base(m),aa(p) cout Constructing derived class endl; j=n; Derived()cout Destructing derived classendl; void show()Base:showi(); cout j, aa.Geti() endl; ;void main() Derived obj(8,13,24); obj.show(); 结果:Constucting base classConstucting base classConstructing derived class13,8,24Destructing derived classDestructing base classDestructing base classPress any key to continue2#includeclass A public: A(char *s) coutsendl; A() ;class B:virtual public A public: B(char *s1, char *s2):A(s1) couts2endl; ;class C: virtual public A public: C(char*s1,char *s2):A(s1) couts2endl; ;class D:public B,public Cpublic: D(char *s1, char *s2,char *s3, char *s4):B(s1,s2),C(s1,s3),A(s1) couts4endl; ;void main() D *p=new D(class A,class B,class C,class D); delete p;运行结果:class Aclass Bclass Cclass D3#includeclass parent int i; protected: int x; public: parent( ) x=0; i=0; void change( ) x+; i+; void display();class son: public parent public: void modify();void parent: display() coutx=xendl; void son:modify() x+; void main() son A; parent B; coutDisplay derived class object A:n; A.display(); A.change(); A.display(); A.modify(); A.display(); coutDisplay base class object B:n; B.change(); B.display();运行结果:Display derived class object A:x=0x=1x=2Display base class object B:x=14#includeclass base public: void show() coutclass base show() is called.n; ;class derived: public base public: void show() coutclass derived show() is called.n; ;void main()base demo1; derived demo2; demo1.show(); demo2.show(); demo2.base:show();运行结果:class base show() is called.class derived show() is called.class base show() is called.五、编程题(共27分,每题9分)1建立一个基类Building ,用来存储一座楼房的层数、房间数以及它的总平方英尺数。建立派生类Housing,继承Building,并存储下面的内容:卧室和浴室的数量,另外,建立派生类Office,继承Building,并存储灭火器和电话的数目。然后,编制应用程序,建立住宅楼对象和办公楼对象,并输出它们的有关数据。代码:#includeusing namespace std;class Buildingpublic:int floor;int room;int area;Building(int f,int r,int a)floor = f;room = r;area = a;class Housing:public Buildingpublic:int bedroom;int bathroom;Housing(int f,int r,int a,int bed,int bath):Building(f,r,a)bedroom = bed;bathroom = bath;void show()coutfloor num:floortroom num:roomtarea:areaendl;coutbedroom num:bedroomtbathroom num:bathroomendl;class Office:public Buildingpublic:int extinguisher;int telephone;Office(int f,int r,int a,int e,int t):Building
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 致敬逆行者教育
- 肿瘤患者诊疗路径图解
- 证券投资亏损补偿合同
- 草原生态环境监测与评估承包合同范本
- 火焰烧伤病人的护理查房
- 商用车辆所有权变更及维护保养合作协议
- 车辆典当服务长期合作协议
- 星级酒店餐饮外包业务合作协议书
- 水利工程场地调研与防洪能力评估合同
- 体育馆场地租赁合同安全责任及管理协议
- 解冻记录表(标准模版)
- 站用电400V系统定期切换试验方案
- 初中数学北师大八年级下册(2023年修订) 因式分解岷阳王冬雪提公因式法教学设计
- 金属非金属矿山安全规程
- 生活饮用水游离余氯方法验证报告
- DB32∕T 186-2015 建筑消防设施检测技术规程
- C-TPAT反恐知识培训ppt课件
- 巡检培训课件.ppt
- 二代征信系统数据采集规范释义
- 轴承基础知识PPT通用课件
- 苏教版二年级(下册)科学全册单元测试卷含期中期末(有答案)
评论
0/150
提交评论