




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章:继承与派生类4_1答:类的继承方式有public(公有继承)、protected(保护继承)和private(私有继承)3种,不同的继承方式导致原来具有不同访问属性的基类成员在派生类中的访问属性也有所不同。(1)基类中的私有成员无论哪种继承方式,基类中的私有成员不允许派生类继承,即在派生类中是不可直接访问的。(2)基类中的公有成员当类的继承方式为公有继承时,基类中的所有公有成员在派生类中仍以公有成员的身份出现;当类的继承方式为私有继承时,基类中的所有公有成员在派生类中都以私有成员的身份出现;当类的继承方式为保护继承时,基类中的所有公有成员在派生类中都是以保护成员的身份出现。(3)基类中的保护成员当类的继承方式为公有继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现;当类的继承方式为私有继承时,基类中的所有保护成员在派生类中都是以私有成员的身份出现:当类的继承方式为保护继承时,基类中的所有保护成员在派生类中仍以保护成员的身份出现。4_2答:派生类不能直接访问基类的私有成员,但是可以通过基类提供的公有成员函数间接地访问基类的私有成员。4_3答:保护成员可以被派生类的成员函数访问,但是对于外界是隐藏起来的,外部函数不能访问它。因此,为了便于派生类的访问,可以将基类私有成员中需要提供给派生类访问的成员定义为保护成员。C+规定,派生类对于保护成员的继承与公有成员的继承很相似,也分为两种情况:若为公有派生,则基类中的保护成员在派生类中也为保护成员;若为私有派生,则基类中的保护成员在派生类中成为私有成员。4_4答:通常情况下,当创建派生类对象时,首先执行基类的构造函数,随后再执行派生类的构造函数;当撤消派生类对象时,则先执行派生类的析构函数,随后再执行基类的析构函数。4_5答:当基类的构造函数没有参数或没有显示定义构造函数时,派生类可以不向基类传递参数,甚至可以不定义构造函数。当基类含有带参数的构造函数时,派生类必须定义构造函数,以提供把参数传递给基类构造函数的途径。派生类构造函数的一般格式如下:派生类构造函数名(参数总表):基类构造函数名(参数表)派生类新增数据成员的初始化语句其中基类构造函数的参数,通常来源于派生类构造函数的参数表,也可以用常数值。由于析构函数是不带参数的,在派生类中是否定义析构函数与它所属的基类无关,基类的析构函数不会因为派生类没有析构函数而得不到执行,它们各自是独立的。4_6答:当一个派生类具有多个基类时,这种派生方法称为多继承。多继承构造函数的执行顺序与单继承构造函数的执行顺序相同,也是遵循先执行基类的构造函数,再执行对象成员的构造函数,最后执行派生类构造函数的原则。在多个基类之间则严格按照派生类声明时从左到右的顺序来排列先后。而析构函数的执行顺序刚好与构造函数的执行顺序相反。4_7在类的派生中为何要引入虚基类?虚基类构造函数的调用顺序是如何规定的?答:当引用派生类的成员时,首先在派生类自身的作用域中寻找这个成员,如果没有找到,则到它的基类中寻找。如果一个派生类是从多个基类派生来的,而这些基类又有一个共同的基类,则在这个派生类中访问这个共同的基类中的成员时,可能会产生二义性。为了解决这种二义性,C+引入了虚基类的概念。虚基类构造函数的调用顺序是:(1)若同一层次中包含多个虚基类,这些虚基类的构造函数按它们的说明的先后次序调用。(2)若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用派生类的构造函数。(3)若同一层次中同时包含虚基类和非虚基类,应先调用虚基类的构造函数,再调用非虚基类的构造函数,最后调用派生类构造函数。4_8 A4_9 C4_10 C4_11 B4_12 运行结果是:Constructor B2.Constructor B1.Constructor A.3214_13运行结果是:主食=bread副食=steak4_14运行结果是:0,0,00,1,03,6,94_15 运行结果是:Constructor B2.2Constructor B1.1Constructor B3.3Constructor A.4124,34_16 运行结果是:44_17 运行结果是:(1,2)5,6(6,9)4_18 运行结果是:class base1class base2class level2class base2class level1class toplevel4_19修改后的程序如下:#include using namespace std;#include class tableprotected:int i,j;public:table(int p,int q) i=p; j=q; void ascii(void);void table:ascii(void)int k=1;for(;ij;i+)coutsetw(4)i (char)i;if(k)%12=0)coutn;k+;coutn;class der_table:public tableprotected:char *c;public:der_table(int p,int q,char *m):table(p,q)c=m;void print(void);void der_table:print(void)coutcn;table:ascii();int main()der_table ob(a,z,ASCII value-char);ob.print();return 0;4.20#include using namespace std;class area_c1protected:double height;double width;public:area_c1(double r,double s)height=r;width=s;virtual double area()=0;class rectangle:public area_c1public:rectangle(double r,double s):area_c1(r,s)double area() return height*width;class isosceles:public area_c1public:isosceles(double r,double s):area_c1(r,s)double area() return 0.5*height*width;int main()area_c1* pa;rectangle r(10.0,5.0);isosceles i(4.0,6.0);pa=&r;coutrectangle area:area()endl;pa=&i;coutisosceles area:area()endl;return 0;4_21程序编制如下:#include #include using namespace std;class Timepublic:Time(int h,int m,int s)hours=h;minutes=m;seconds=s;void display() couthours:minutes:secondsendl; protected:int hours,minutes,seconds;class Datepublic:Date(int m,int d,int y)month=m;day=d;year=y;void display() coutmonth/day/year; protected:int month,day,year;class Birthtime:public Time, public Datepublic:Birthtime(char *cn,int mm,int dd,int yy,int hh,int mint,int ss):Time(hh,mint,ss),Date(mm,dd,yy) strcpy(childname,cn); void display()coutchildname ;Date:display();coutendl;Time:display();protected:char childname20;int main()Birthtime yx(yuanxiang ,10,27,1966,13,20,0);yx.display();return 0;4_22实现本题功能的程序如下:#include using namespace std;class personpublic:void input()coutname;coutno;void disp()cout编号:noendl;cout姓名:nameendl;private: int no;char namel0;class student:public personpublic:void input()person:input();coutdepart;coutdegree;void disp()person:disp();cout班号: depart endl;cout成绩: degree endl;private:char depart10; int degree ;class teacher:public personpublic:void input()person:input();coutprof;coutdepart;void disp()person:disp();cout职称: profendl;cout部
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高效离婚法律文书协议书定制服务合同
- 2025场地汽车租赁及场地停车管理合同范本
- 2025大酒店营养健康食品供应与研发合作协议范本
- 2025年度体育场馆场地租赁合同终止及更新协议书
- 2025年度电气安装与智能交通系统施工合同
- 2025二手商业地产租赁及买卖一体化协议样本
- 2025东莞“三旧”改造项目安全风险评估合同
- 2025二手房买卖合同补充协议书:房屋租赁权及使用权约定
- 2025版铁路货运物流信息化建设项目合同
- 2025年北京重点民生工程建筑施工合同约定
- 学堂在线 劳动教育 章节测试答案
- 2025-2031年中国AI成人娃娃行业市场发展规模及投资机会研判报告
- 2025年江苏省昆山市辅警招聘考试试题题库及答案详解(典优)
- 2025至2030中国个人定位信标(PLB)行业产业运行态势及投资规划深度研究报告
- 邮储银行招聘考试笔试试题集及参考答案
- 2025年振兴中学分班考试题及答案
- 投标部奖罚管理办法
- 肿瘤防治宣传科课件
- 2025年军队文职人员招聘考试(公共科目)测试题及答案一
- 健康四大基石科普讲座
- 护士培训班自我介绍
评论
0/150
提交评论