




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C+讲义-第九章习题一 选择题1下列对派生类的描述中,错误的是( )A一个派生类可以作为另一个派生类的基类。B派生类至少有一个基类。C派生类的成员除了它自己的成员之外,还包含了它的基类的成员。D派生类中继承的基类成员的访问权限到派生类保持不变。2派生类的对象对它的基类成员中,可以访问的是( )A公有继承的公有成员。B公有继承的私有成员。C公有继承的保护成员。D私有继承的公有成员。3对基类和派生类的关系描述中,错误的是( )A派生类是基类的具体化。B派生类是基类的子集。C派生类是基类定义的延续。D派生类是基类的组合。4派生类的构造函数的成员初始化列表中,不能包含的是( )A基类的构造函数。B派生类中子对象的初始化。C基类的子对象初始化。D派生类中一般数据成员的初始化。5关于子类型的描述中,错误的是( )A子类型就是指派生类是基类的子类型。B一种类型当它至少提供了另一种类型的行为,则这种类型是另一种类型的子类型。C在公有继承下,派生类是基类的子类型。D子类型关系是不可逆的。6关于多继承二义性的描述中,错误的是( )A一个派生类的两个基类中都有某个同名成员,在派生类中对这个成员的访问可能出现二义性。B解决二义性的常用方法是对成员名进行类名限定。C基类和派生类中同时出现的同名函数,也存在二义性问题。D一个派生类是从两个基类派生来的,而这两个基类又有一个共同的基类,对该基类成员进行访问时,也可能出现二义性。7设置虚基类的目的是( )A简化程序 B消除二义性C提高运行效率 D减少目标代码8带有虚基类的多层派生类构造函数的成员初始化列表中都要列出虚基类的构造函数,这样将对虚基类的子对象初始化的次数为( )A与虚基类下面的派生类个数有关。 B多次C二次 D一次9C+中的类有两种用法:一种是类的实例化,即生成类的对象,并参与系统的运行;另一种是通过( ),派生出新的类。A复用 B继承 C单继承 D多继承10当基类本身也是某一个类的派生类时,底层的派生类也会自动继承间接基类的成员,这种特性是继承的( )。A规律性 B传递性 C重复性 D多样性11若类A与类B的定义如下:class Aint i,j;public:void get();/.;class B:Aint k;public:void make() k=i*j; /.;则上述定义中,非法的是( )。Avoid get(); Bint k; Cvoid make() Dk=i*j;12在派生类中定义的析构函数与它所属的基类的关系是( )。A一定有关 B一定无关 C以上都不对13在多继承中,公有派生和私有派生对于基类成员在派生类中的可访问性与单继承的规则是( )。A完全相同的 B完全不同的C部分相同,部分不同 D以上都不对14在多继承的构造函数定义中,几个基类的构造函数之间的分隔符是( )。A: B; C, D:二判断下列描述的正确性。1C+语言中,既允许单继承,又允许多继承。2派生类是从基类派生出来的,它不能再派生新的派生类。3派生类的继承方式有两种:公有继承和私有继承。4在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。5在公有继承中,基类中只有公有成员对派生类对象是可见的。6在私有继承中,基类中只有公有成员对派生类是可见的。7在私有继承中,基类中所有成员对派生类的对象都是不可见的。8在保护继承中,对于垂直访问同于公有继承,而对于水平访问同于私有继承。9派生类是它的基类的组合。10构造函数可以被继承。11析构函数不能被继承。12子类型是不可逆的。13只有是类M继承了类N,就可以说类M是类N的子类型。14如果A类型是B类型的子类型,则A类型必然适应于B类型。15多继承情况下,基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。16单继承情况下,派生类中对基类成员的访问也会出现二义性。17解决多继承情况下出现的二义性的方法之一是使用成员名限定法。18虚基类是用来解决多继承中公共基类在派生类中产生多个基类子对象的拷贝问题。三回答问题。1在下面给定的含有虚基类的复杂继承结构中,回答下列提出的各问题。class Apublic:void f();class B:virtual public Apublic:void f();class C:public B ;class D:public C,virtual public Apublic:void g();问题: 画出上述结构的DAG图。 设有 D d;问:d.f()是否有二义性。 设有:void D:g() f(); 。问:g()函数中对f()调用是否有二义性。2在下面给定的继承结构中,回答下列提出的问题。class Apublic:int a;int b();int f();int f(int);int g();class Bpublic: char f();int g();private:int a;int b();class C:public A,public B;设有:C *pc;问题: pc-a=1是否存在二义性。 pc-b()是否存在二义性。 pc-f()是否存在二义性。 pc-f(10)是否存在二义性。 pc-g()是否存在二义性。四分析下列程序的输出结果。1程序清单如下:#includeclass Apublic:A(int i,int j) a=i; b=j; void Move(int x,int y) a+=x; b+=y; void show() cout(a,b)endl; private:int a,b;class B:private Apublic:B(int i,int j,int k,int m):A(i,j) x=k; y=m; void show() coutx,yendl; void fun() Move(3,5); void f1() A:show(); private:int x,y;void main()A e(1,2);e.show();B d(3,4,5,6);d.fun();d.show();d.f1();2程序清单如下:#includeclass Apublic:A(int i,int j) a=i; b=j; void Move(int x,int y) a+=x; b+=y; void show() cout(a,b)endl; private:int a,b;class B:public Apublic:B(int i,int j,int k,int m):A(i,j) x=k; y=m; void show() coutx,yendl; void fun() Move(3,5); void f1() A:show(); private:int x,y;void main()A e(1,2);e.show();B d(3,4,5,6);d.fun();d.show();d.f1();3程序清单如下:#includeclass Lpublic:void InitL(int x,int y) X=x;Y=y; void Move(int x,int y) X+=x; Y+=y; int GetX() return X; int GetY() return Y; private:int X,Y;class R:public Lpublic:void InitR(int x,int y,int w,int h)InitL(x,y); W=w; H=h;int GetW() return W; int GetH() return H; private:int W,H;class V:public Rpublic:void fun() Move(3,2); ;void main()V v;v.InitR(10,20,30,40);v.fun();coutv.GetX(),v.GetY(),v.GetW(),v.GetH()endl;4程序清单如下:#includeclass Ppublic:P(int p1,int p2) pri1=p1; pri2=p2; int inc1() return +pri1; int inc2() return +pri2; void display() coutpri1=pri1,pri2=pri2endl; private:int pri1,pri2;class D1:private Ppublic:D1(int p1,int p2,int p3):P(p1,p2) pri3=p3; int inc1() return P:inc1(); int inc3() return +pri3; void display() P:display(); coutpri3=pri3endl; private:int pri3;class D2:public Ppublic:D2(int p1,int p2,int p3):P(p1,p2),pri4(p3) int inc1() P:inc1(); P:inc2(); return P:inc1(); int inc4() return +pri4; void display() P:display(); coutpri4=pri4endl; private:int pri4;class D12:private D1,public D2public:D12(int p11,int p12,int p13,int p21,int p22,int p23,int p):D1(p11,p12,p13),D2(p21,p22,p23) pri12=p;int inc1() D2:inc1(); return D2:inc1(); int inc5() return +pri12; void display() D2:display(); coutpri12=pri12endl; private:int pri12;void main()D12 d(1,2,3,4,5,6,7);d.display();coutendl;d.inc1();d.inc4();d.inc5();d.D12:inc1();d.display();5程序清单如下:#includeclass Ppublic:P(int p1,int p2) pri1=p1; pri2=p2; int inc1() return +pri1; int inc2() return +pri2; void display() coutpri1=pri1,pri2=pri2endl; private:int pri1,pri2;class D1:virtual private Ppublic:D1(int p1,int p2,int p3):P(p1,p2) pri3=p3; int inc1() return P:inc1(); int inc3() return +pri3; void display() P:display(); coutpri3=pri3endl; private:int pri3;class D2:virtual public Ppublic:D2(int p1,int p2,int p3):P(p1,p2),pri4(p3) int inc1() P:inc1(); P:inc2(); return P:inc1(); int inc4() return +pri4; void display() P:display(); coutpri4=pri4endl; private:int pri4;class D12:private D1,public D2public:D12(int p11,int p12,int p13,int p21,int p22,int p23,int p):D1(p11,p12,p13),D2(p21,p22,p23),P(p11,p12),pri12(p) int inc1() D2:inc1(); return D2:inc1(); int inc5() return +pri12; void display() D2:display(); coutpri12=pri12endl; private:int pri12;void main()D12 d(1,2,3,4,5,6,7);d.display();coutendl;d.inc1();d.inc4();d.inc5();d.D12:inc1();d.display();6程序清单如下:#includeclass dataint x;public:data(int x) data:x=x; coutclass dataendl; ;class adata d1;public:a(int x):d1(x) coutclass aendl; ;class b:public adata d2;public:b(int x):a(x),d2(x) coutclass bendl; ;class c:public bpublic:c(int x):b(x) coutclass cendl; ;void main()c obj(5);7程序清单如下:#includeclass basepublic:void who() coutbase classendl;class derive1:public basepublic:void who() coutdevive1 classendl;class derive2:public basepublic:void who() coutderive2 classwho();p=&obj2; p-who();p=&obj3; p-who();obj2.who(); obj3.who();8程序清单如下:#includeclass baseint x1,x2;public:void assign(int p1,int p2) x1=p1; x2=p2; int inc1() return +x1; int inc2() return +x2; void display()coutbase x1=x1,x2=x2endl;class derive1:baseint x3;public:derive1(int p3) x3=p3; void assign(int p1,int p2) base:assign(p1,p2); int inc1() return base:inc1(); int inc2() return base:inc2(); int inc3() return +x3; void display() coutderive1 x3=x3endl; ;class derive2: public baseint x4;public:derive2(int p4) x4=p4; int inc1()int temp=base:inc1();temp=base:inc1();temp=base:inc1();return base:inc1();int inc4() return +x4; void display()base:display();coutderive2 x4=x4endl;void main()base p;p.assign(-2,-2);p.display();derive1 d1(-4); d1.assign(10,10); d1.inc1(); d1.display();derive2 d2(5); d2.assign(-6,-6); d2.display(); d2.inc1(); d2.inc2();d2.display(); d2.base:inc1(); d2.display();9程序清单如下:#includeclass basepublic:base() coutbase类构造函数endl; virtual base()=0;base:base() coutbase类析构函数endl; class derived:public basepublic:derived() coutderived类构造函数endl; derived() coutderived析构造函数endl; ;void main()derived *p=new derived;delete p;10程序清单如下:#includeclass personchar *name;int age;char *add;public:person() coutperson class constructorendl; person() coutperson class destructorendl; ;class student:public personchar *department;int level;public:student() coutstudent class constructorendl; student() coutstudent class destructorendl; ;class teacher:public personchar *major;float salary;public:teacher() coutteacher class constructorendl; teacher() coutteacher class destructorendl; ;void main()student s1;teacher t1;五填空题1派生可分为 、 和 。由 得到的派生类,其基类的所有公有成员都只能成为它的私有成员,这些私有成员只能被派生类的成员函数访问,而 无权访问。 的意义是基类中所有公有成员在派生类也都是公有的。2基类的 不能为派生类的成员访问,基类的 在派生类中的性质和继承的性质一样,而基类的 在私有继承时在派生类中成为私有成员函数,在公有和保护继承时在派生类中仍为保护成员函数。3 提供了类对外部的接口, 是类的内部实现,而 不允许外界访问,但允许派生类的成员访问,这样既有一定的隐藏能力,又提供了对外开放的接口。4对于派生类的构造函数,在定义对象时构造函数的执行顺序为:先执行 ,再执行 ,后执行 。对于多继承的情形,在执行基类构造函数时,其执行按 顺序执行的。5对于派生类与基类的关系,可从三个方面进行理解。可认为派生类是基类的 、派生类是基类 、派生类是基类的 。6当派生类对象生命周期结束时,系统会自动调用析构函数。由于 ,所以在执行析构函数时,先执行 ,再执行 。7派生类与基类之间可以存在类型适应的关系,派生类可以是基类的子类型,基于这种关系的继承要求是 ,且子类型的适应关系是 。类型适
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 天津乐理模拟试题及答案
- 广告制作合同文本
- 建筑新材料生产线项目建筑工程方案
- 农村供水保障补短板强弱项工程建设工程方案
- 结核病知识竞赛题及答案
- 空气能热水器环保认证与购销及市场拓展合同
- 住宅小区物业租赁委托管理收费标准合同样本
- 工业废渣资源化利用实施方案
- 培育轻工业新消费增长点实施方案
- 建筑方案设计理念
- GB/T 46084-2025燃煤锅炉火焰温度图像检测技术规范
- 2025年贵州省毕节市辅警招聘考试题题库(含参考答案)
- 女职工法律培训
- 2025年辅警考试公共基础知识真题库(含答案)
- 2025劳动合同范本下载
- 2025-2026学年高二上学期数学第一次月考立体几何卷全解析【测试范围:沪教版2020必修第三册第十章】(上海专用)
- 小学法律知识竞赛试题(附答案)
- 浙教版(2023)五年级上册信息科技 第1课 身边的算法 课件
- 2025年五年级上学期语文第一单元测试卷含答案
- Unit 3 Places we live in单元整体公开课一等奖创新教学设计表格式(5课时)
- 2025年4月自考02204经济管理试题及答案
评论
0/150
提交评论