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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

实验六继承与派生.docx

1、实验六继承与派生实验六-继承与派生继承与组合一、实验目的1了解继承在面向对象程序设计中的重要作用。2进一步理解继承与派生的概念。3掌握通过继承派生出一个新的类的方法。4了解虚基类的作用和用法。5掌握类的组合二、实验内容1请先阅读下面的程序,写出程序运行的结果,然后再上机运行程序,验证自己分析的结果是否正确。(1)#include using namespace std;class Apublic: A()coutA:A() called.n; virtual A()coutA:A() called.n; class B:public A public: B(int i) coutB:B() c

2、alled.n; buf=new chari; virtual B() delete buf; coutB:B() called.n; private: char *buf; ; void fun(A *a) coutMay you succeed!endl; delete a; int main() A *a=new B(15); fun(a); return 0;1、(1)程序运行结果:A:A() called.B:B() called.May you succeed!B:B() called.A:A() called.(2)#includeusing namespace std;clas

3、s Apublic: A(int a,int b):x(a),y(b) coutA constructor.endl; void Add(int a,int b) x+=a;y+=b; void display() cout(x,y); A()coutdestructor A.endl;private: int x,y;class B:private Aprivate: int i,j; A Aobj;public: B(int a,int b,int c,int d):A(a,b),i(c),j(d) ,Aobj(1,1) coutB constructor.endl; void Add(i

4、nt x1,int y1,int x2,int y2) A:Add(x1,y1); i+=x2; j+=y2; void display() A:display(); Aobj.display(); cout(i,j)endl; B()coutdestructor B.endl; ;int main() B b(1,2,3,4); b.display(); b.Add(1,3,5,7); b.display(); return 0;(2)程序运行结果:A constructor.A constructor.B constructor.(1,2) (1,1) (3,4)(2,5) (1,1) (

5、8,11)destructor B.destructor A.destructor A.(3)#includeusing namespace std;class Apublic: A(int a):x(a) coutA constructor.xendl; int f()return +x; A()coutdestructor A.endl;private: int x;class B:public virtual Aprivate: int y; A Aobj;public: B(int a,int b,int c):A(a),y(c),Aobj(c) coutB constructor.y

6、endl; int f() A:f(); Aobj.f(); return +y; void display() coutA:f()tAobj.f()tf()endl; B()coutdestructor B.endl; ;class C:public Bpublic: C(int a,int b,int c):B(a,b,c),A(0) coutC constructor.endl;class D:public C,public virtual Apublic: D(int a,int b,int c):C(a,b,c),A(c) coutD constructor.endl; D()cou

7、tdestructor D.endl;int main() D d(7,8,9); d.f(); d.display();return 0;(3)程序运行结果:A constructor.9A constructor.9B constructor.9C constructor.D constructor.12 12 11destructor D.destructor B.destructor A.destructor A.(4)#include using namespace std;class Base1 public: Base1() coutclass Base1!endl; ;clas

8、s Base2 public: Base2() coutclass Base2!endl; ;class Level1:public Base2,virtual public Base1public: Level1() coutclass Level1!endl; ;class Level2: public Base2,virtual public Base1public: Level2() coutclass Level2!endl; ;class TopLevel:public Level1,virtual public Level2public: TopLevel() coutclass

9、 TopLevel!endl; ;int main() TopLevel obj; return 0;(4)程序运行结果:class Base1!class Base12class Leve12!class Base2!class Leve11!class TopLeve1!2某出版系统发行图书和磁带,利用继承设计管理出版物的类。要求如下:建立一个基类Publication存储出版物的标题title、出版物名称name、单价price及出版日期date。用Book类和Tape类分别管理图书和磁带,它们都从Publication类派生。Book类具有保存图书页数的数据成员page,Tape类具有

10、保存播放时间的数据成员playtime。每个类都有构造函数、析构函数,且都有用于从键盘获取数据的成员函数inputData(),用于显示数据的成员函数display()。2、#include using namespace std;#include class Datepublic: Date() Date(int y,int m,int d); Date(Date &d); void SetDate(int y,int m,int d); void ShowDate(); private: int year,month,day;Date:Date(int y,int m,int d) yea

11、r=y; month=m; day=d; Date:Date(Date &d) year=d.year; month=d.month; day=d.day; void Date:SetDate(int y,int m,int d) year=y; month=m; day=d; void Date:ShowDate() coutyear年month月day日endl; class Timepublic: Time() Time(int h,int m,int s); Time(Time &t); void SetTime(int h,int m,int s); void ShowTime();

12、 private: int hour,minute,second;Time:Time(int h,int m,int s) hour=h; minute=m; second=s; Time:Time(Time &t) hour=t.hour; minute=t.minute; second=t.second; void Time:SetTime(int h,int m,int s) hour=h; minute=m; second=s; void Time:ShowTime() couthour:minute:secondendl; class Publicationpublic: Publi

13、cation() Publication(string title,string name,float price,int y,int m,int d); void inputData(); void display();private: string title; string name; float price; Date date;Publication:Publication(string title,string name,float price,int y,int m,int d):title(title),name(name),price(price),date(y,m,d)vo

14、id Publication:inputData() coutPlease input title, name, price, publication date of a book:titlenameprice; int year,month,day; cinyearmonthday; date.SetDate(year,month,day);void Publication:display() couttitle=titleendl; coutname=nameendl; coutprice=priceendl; coutpage=page;void Book:inputData() Pub

15、lication:inputData(); coutPlease the pages of the book:page;void Book:display() Publication:display(); coutpage=pageendl;class Tape:public Publicationpublic: Tape() Tape(string title,string name,float price,int y,int m,int d,Time playtime); void inputData(); void display();private: Time playtime;Tap

16、e:Tape(string title,string name,float price,int y,int m,int d,Time playtime):Publication(title,name,price,y,m,d),playtime(playtime)void Tape:inputData() Publication:inputData(); coutPlease the playtime of the tape:hourminutesecond; playtime.SetTime(hour,minute,second);void Tape:display() Publication

17、:display(); coutplaytime=; playtime.ShowTime();int main() Book book1(教材,C+程序设计,30.00,2009,6,1,300); book1.display(); coutendl; Time time1(30,10,20); Tape tape1(磁带,C+程序设计视频,10.00,2009,8,1,time1); tape1.display(); Book book2; book2.inputData(); book2.display(); coutendl; Tape tape2; tape2.inputData();

18、 tape2.display(); return 0;3分别定义教师类Teacher和干部类Cadre,采用多重继承的方式由这两个类派生出新类Teacher_Cadre(教师兼干部类)。要求:(1)在两个基类中都包含姓名、年龄、性别、地址、电话数据成员。(2)在Teacher类中还包含数据成员职称title,在Cadre类中还包含数据成员职务post,在Teacher_Cadre类中还包含数据成员工资wage。(3)对两个基类中的姓名、年龄、性别、地址、电话数据成员用相同的名字,在访问这类数据成员时,指定作用域。(4)在类体中声明成员函数,在类外定义成员函数。(5)在派生类Teacher_Ca

19、dre的成员函数show中调用Teacher类中的display函数,输出姓名、年龄、性别、地址、电话,然后再用cout语句输出职务和工资。3、#include#include using namespace std;class Teacher public: Teacher(string nam,int a,char s,string tit,string ad,string t); void display(); protected: string name; int age; char sex; string title; string addr; string tel;Teacher:

20、Teacher(string nam,int a,char s,string tit,string ad,string t): name(nam),age(a),sex(s),title(tit),addr(ad),tel(t) void Teacher:display() coutname:nameendl; coutageageendl; coutsex:sexendl; couttitle:titleendl; coutaddress:addrendl; couttel:telendl; class Cadre public: Cadre(string nam,int a,char s,

21、string p,string ad,string t); void display(); protected: string name; int age; char sex; string post; string addr; string tel; ; Cadre:Cadre(string nam,int a,char s,string p,string ad,string t): name(nam),age(a),sex(s),post(p),addr(ad),tel(t)void Cadre:display() coutname:nameendl; coutage:ageendl; c

22、outsex:sexendl; coutpost:postendl; coutaddress:addrendl; couttel:telendl;class Teacher_Cadre:public Teacher,public Cadre public: Teacher_Cadre(string nam,int a,char s,string tit,string p,string ad,string t,float w); void show( ); private: float wage; ; Teacher_Cadre:Teacher_Cadre(string nam,int a,ch

23、ar s,string t,string p,string ad,string tel,float w): Teacher(nam,a,s,t,ad,tel),Cadre(nam,a,s,p,ad,tel),wage(w) void Teacher_Cadre:show( ) Teacher:display(); coutpost:Cadre:postendl; coutwages:wageendl;int main( ) Teacher_Cadre te_ca(Wang-li,50,f,prof.,president,135 Beijing Road,Shanghai,(021)612345

24、67,1534.5); te_ca.show( ); return 0;4按下列要求编写程序。(1)定义一个分数类Score。它有3个数据成员:Chinese /语文课成绩English /英语课成绩Mathematics /数学课成绩2个构造函数:无参的和带参数的3个成员函数:是否带参数根据需要自定sum() /计算三门课总成绩print() /输出三门课成绩和总成绩modify() /修改三门课成绩(2)定义一个学生类Student。它有3个数据成员:Num /学号Name /姓名MyScore /成绩2个构造函数:无参的和带参数的3个成员函数:是否带参数根据需要自定sum() /计算某学

25、生三门课总成绩print() /输出某学生学号、姓名和成绩modify() /修改某学生学号、姓名和成绩(3)在主函数中,先定义一个学生类对象数组,再通过for循环给对象数组赋上实际值,最后输出对象数组个元素的值。4、#include#includeusing namespace std;class scorepublic: score() chinese=0; english=0; mathematics=0; score(float ch,float en,float ma):chinese(ch),english(en),mathematics(ma) float sum(); void

26、 print(); void modify(); private: float chinese; float english; float mathematics;class studentpublic: student(): myscore(0,0,0) num=000000000; name=无; student(string n,string na,float m,float c,float e):num(n),name(na),myscore(m,c,e) float sum(); void print(); void modify(); private: string num; stri

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

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