ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:22.58KB ,
资源ID:22693618      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22693618.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第12章继承与派生主观题目和客观题目林华文档格式.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第12章继承与派生主观题目和客观题目林华文档格式.docx

1、e=e1int getB_d()return d; int getB_e()return e;2、根据下列代码,写出派生类B所含的成员及成员的访问控制属性 portected A3、根据下列代码,写出派生类Y所含的成员及成员的访问控制属性class BASE BASE() i=1; j=2; xtemp=3; void get_xtemp() get_ij(); cout(BASE)xtemp=xtempendl;protected: int i, j; void get_ij() cout(BASE)i=i(BASE)j=jprivate: int xtemp;class Y: public

2、 BASE Y() k=4; xtemp=5; void get_temp() cout(Y)i=(Y)j= cout (Y)k=kcout(Y)xtemp= get_ij(); double k; void get_xtemp() coutget_xtemp() in Y double xtemp; 4、根据下列代码,写出派生类Y所含的成员及成员的访问控制属性 protected BASE 5、根据下列代码,写出派生类B所含的成员及成员的访问控制属性class A int ax; int ay; int az; int Getax( )return ax; void Setax( int x

3、 ) ax = x;class B: public A int bx; int by; int bz; int Getbz( )return bz; void Setbz( int z )bz=z;6、根据下列代码,写出派生类B所含的成员及成员的访问控制属性 protected A三、填空题1、如果类继承了类,则类称为 (1) 类,而类称为 (2) 类。 (3) 类的对象可作为 (4) 类的对象处理,反过来不行,因为 (5) 。如果强制转换则要注意 (6) 。答案:(1)基类(2)派生类(3)派生类(4)基类(5)派生类有一些新成员(6)只能派生类强制转换为基类2、当用public继承从基类派

4、生一个类时,基类的public成员成为派生类的 (1) 成员,protected成员成为派生类的 (2) 成员,对private成员是 (3) 。公有派生可以使其类的 (4) ,所以公有派生是主流。(1)public成员(2)protected成员(3)不可访问(4)接口不变3、利用继承能够实现 (1) 。这种实现缩短了程序开发的时间,VC+中的 (2) 很好地体现了这一点。(1)代码的复用(2)MFC编程4、一个派生类只有一个直接基类的情况称为 (1) ,而有多个直接基类的情况称为(2) 。继承体现了类的 (3) 概念,这在MFC中得到了很好表现,MFC中只采用了 (4) 。(1)单继承/单

5、一继承(2)多继承/多重继承(3)层次(4)单继承/单一继承5、生成一个派生类对象时,先调用 (1) 的构造函数,然后调用 (2) 的构造函数。(1)基类/虚基类 (2)派生类6、继承发生在利用已有类派生新类时,其中 (1) 称为基类,或 (2) 类; (3) 称为派生类,或 (4) 类。(1)已有类 (2)父 (3)新类 (4)子7、在公有继承关系下,派生类的对象可以访问基类中的 (1) 成员,派生类的成员函数可以访问基类中的 (2) 成员。(1)公有/public (2)公有和保护/public and protected8、在保护继承关系下,基类的公有成员和保护成员将成为派生类中的 (1

6、) 成员,它们只能由派生类的 (2) 来访问;基类的私有成员将成为派生类中的 (3) 成员。(1)保护成员/protected (2)成员函数 (3)不可访问四、简答题1、构造函数和析构函数可以继承吗?派生类构造函数各部分的执行次序是怎样的?答:构造函数和析构函数不可以继承。派生类构造函数各部分的执行次序是:1. 调用基类构造函数,按它们在派生类声明的先后顺序,依次调用。2. 调用新增成员对象的构造函数,按它们在类定义中声明的先后顺序,依次调用。3. 派生类的构造函数体中的操作。2、派生类的析构函数中需完成什么任务?是否要编写对基数和成员对象的析构函数的调用?为什么?析构函数的功能用于撤销该对

7、象时做清理工作,析构函数无返回类型也没有参数,情况比较简单。派生类析构函数定义格式与非派生类无任何差异,不要编写对基数和成员对象的析构函数的调用,只要在函数体内把派生类新增一般成员处理好就可以了,因为对新增的成员对象和基类的善后工作,系统会自己调用成员对象和基类的析构函数来完成。3、为什么要使用虚基类?怎样定义虚基类?在多重继承是有可能出现同一基类的两个拷贝,为避免这种情况,可使用虚基类。虚基类(virtual base class)定义方式如下:class 派生类名:virtual 访问限定符 基类类名.;访问限定符 virtual 基类类名.;4、比较类的三种继承方式public(公有继承

8、)、protected(保护继承)、private(私有继承)之间的差别。继承方式决定了基类中的成员在派生类中的属性。三种继承方式的共同点:基类的private成员在派生类中不可见。区别:对于私有继承,基类的public,protected成员在派生类中作为private成员;对于公有继承,基类的public,protected成员在派生类中访问属性不变;对于保护继承,基类的public,protected成员在派生类中作为protected成员。5、简单叙述派生类与基类的赋值兼容规则。凡是基类所能解决的问题,公有派生类都可以解决。在任何需要基类对象的地方都可以用公有派生类的对象来代替,这条规

9、则称赋值兼容规则。它包括以下情况:1 派生类的对象可以赋值给基类的对象,这时是把派生类对象中从对应基类中继承来的成员赋值给基类对象。反过来不行,因为派生类的新成员无值可赋。2 可以将一个派生类的对象的地址赋给其基类的指针变量,但只能通过这个指针访问派生类中由基类继承来的成员,不能访问派生类中的新成员。同样也不能反过来做。派生类对象可以初始化基类的引用。引用是别名,但这个别名只能包含派生类对象中的由基类继承来的成员。6、什么是派生类与基类的赋值兼容规则?派生类与基类的赋值兼容规则:可以将公有派生类对象赋值给基类对象,反之是不允许的。五、阅读程序,分析类间关系及写出执行结果:1、写出下面程序的输出

10、#includeclass base int n; base(); base (int a) cout constructing base class endl; n=a;n= n base() cout destructing base classclass subs : public base int m; subs(int a, int b) : base(a)constructing sub class m=b; coutm= m subs()destructing sub classvoid main () subs s(1,2); 这里base 是基类,subs为派生类,subs类

11、的构造函数中含有调用基本类的构造函数。所以输出为: constructing base class n=1 constructing sub class n=2 destructing base class destructing sub class2、写出下面程序的输出#include A(int i) a=i;cout constructing class A void print() a A()destructing class Aclass Bi:public A int bl; Bl(int i,int j):A(i) bl=j;constructing class BI void

12、print() A:print (); bl BI() cout destructing class BIclass B2: int b2; B2(int i,int j):A(i); b2=j;constructing class B2 b2 B2() cout destructing class B2class C:public B1,public B2 int c; C(int i,int j,int k, int 1,int m) :Bl(i,j),B2(k,1),c(m)constructing class C Bl:print(); B2: c C( ) cout destruct

13、ing class Cvoid main() C c1(1,2,3,4,5); cl.print(); C类是从B1类和B2类派生的,而B1和B2类又都是从A类派生,但各有自己的副本,所有这些成员函数均有print()成员函数。所以,在C的成员函数实现中,调用print()时,要加上类作用域运算符“:”。constructing class Aconstructing class B1constructing class B2constructing class C12345destructing class Cdestructing class B2destructing class Ade

14、structing class B13、写出下面程序的输出 A(char *s) s A() B(char *sl,char *s2) :A(sl) s2 C(char *sl,char *s2) :class D:public B,public C D(char *sl,char *s2,char *s3,char *s4) :B(sl,s2),C(sl,s3) s4 D d(class A,class Bclass Cclass D); D类是从B和C类派生的,而B和C类又都是从A类派生,但各有自己的副本。class Bclass Cclass D4、写出下面程序的输出 A()coutnT

15、his is A class.n; B()coutThis is B class.nclass derivedA:public B,virtual public A public: derivedA()coutThis is derivedA class.nclass derivedB: public B,virtual public A derivedB()coutThis is derivedB class.nclass Derived: public derivedA, virtual public derivedB Derived()coutThis is Derived class.

16、n ;int main() Derived obj; return 1;derivedA类和derivedB类都是从虚基类A和基类B派生的,而Derived类又从derivedA类和虚基类derivedB派生,但各有自己的副本。This is A class.This is B class.This is derivedB class.This is derivedA class.This is Derived class.5、写出下面程序的输出class Base int i; Base(int n)cout Constucting base classi=n; Base()cout Destructing base class void showi()cout i int Geti()return i;public Base int j; Base aa; Derived(int n,int m,int p):Base(m),aa(p)Constructing derived class j=n; Derived()cout Destructing derived class void show()Base:showi(); j aa.Geti() Deri

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1