第三次上机报告

上传人:F****n 文档编号:99561021 上传时间:2019-09-19 格式:DOC 页数:9 大小:123.50KB
返回 下载 相关 举报
第三次上机报告_第1页
第1页 / 共9页
第三次上机报告_第2页
第2页 / 共9页
第三次上机报告_第3页
第3页 / 共9页
第三次上机报告_第4页
第4页 / 共9页
第三次上机报告_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《第三次上机报告》由会员分享,可在线阅读,更多相关《第三次上机报告(9页珍藏版)》请在金锄头文库上搜索。

1、实验三学号: 姓名: 班级:软件工程141继承与派生(4学时)一、实验目的1学习定义和使用类的继承关系,定义派生类。2熟悉不同继承方式下对基类成员的访问控制。3学习利用虚基类解决二义性问题。二、实验任务 1定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。 2定义一个基类BaseClass,有整型成员变量Number,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。 3. 分析并调试以下程序运行结果,并和实际运行结果相对照

2、。#include using namespace std;class Baseint x;public:Base(int i)x=i;coutConstuctor of Baseendl;Base()coutDestuctor of Baseendl;void show()coutx=xendl;class Derived:public BaseBase d;public:Derived(int i):Base(i),d(i)coutConstuctor of Derivedendl;Derived()coutDestuctor of Derivedendl;int main( )Deriv

3、ed obj(5);obj.show();return 0; 4定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车(bicycle)类有高度(Height)等属性,汽车(mot orcar)类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类。 在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。 5设计people(人员)类,考虑到通用性,抽象出所有类

4、型人员都具有的属性:number(编号)、sex(性别)、birthday(出生日期)、id(身份证号)等等。派生出student(学生)类,添加属性:班号char classNO7;从people类派生出teacher(教师)类,添加属性:职务char principalship11、部门char departmentE21。从student类中派生出graduate(研究生)类,添加属性:专业char subject21、导师teacher adviser;从graduate类和teacher类派生出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。三、实验步骤 1.若将

5、age设置为私有成员,在其派生类中直接给其赋值,会出现错误提示: 将age设置为公有成员时,能正常运行 代码: #includeusing namespace std;class Animalpublic:int age;class dog:public Animalpublic:int setAge(int n)age=n; return age;int main()dog d;coutd.setAge(3)endl;return 0; 运行结果为:2.执行情况为:(1)基类BaseClass的构造函数; (2)派生类DerivedClass的构造函数; (3)派生类DerivedClass

6、的析取函数; (4)基类BaseClass的析取函数; 代码: #includeusing namespace std;class BaseClasspublic:BaseClass() Number=90;coutconstructor of BaseClass!endl; BaseClass()coutdestructor of BaseClass!endl;private:int Number;class DerivedClass:public BaseClasspublic: DerivedClass()coutconstrctor of DerivedClass!endl; Deri

7、vedClass()coutdestructor of DerivedClass!endl; ;int main() DerivedClass der;return 0; 执行结果:3.分析:(1)执行Base的构造函数; (2)执行Derived的对象obj的Base类构造函数,并将obj(5)中参数5赋值给X及Derived类构造函数; (3)执行Derived类的对象obj的Derived的析取函数、在执行Derived类的obj的Base析取函数,最后执行与第一步相对应的Base的析取函数;执行结果:4.虚基类:使得在继承间接共同基类时只保留一份成员。 若不使用虚基类,在最终的派生类中

8、会保留该间接共同基类数据成员的多份同名成员。 代码: #includeusing namespace std;class vehiclepublic:vehicle(float m,float w)MaxSpeed=m;Weight=w;vehicle()void run()coutrunning of vehicle!endl;void stop()coutstopping of vehicle!endl;float MaxSpeed;float Weight;class bicycle:virtual public vehiclepublic:bicycle(float m,float w

9、,float h):vehicle(m,w)Height=h;bicycle()float Height;class motorcar:virtual public vehiclepublic:motorcar(float m,float w,int s):vehicle(m,w)SeatNum=s;motorcar()int SeatNum;class motorcycle:public bicycle,public motorcarpublic:motorcycle(float m,float w,float h,int s):vehicle(m,w),bicycle(m,w,h),mot

10、orcar(m,w,s)motorcycle()void display()coutMaxSpeed=MaxSpeedendl;coutWeight=Weightendl;coutHeight=Heightendl;coutSeatNum=SeatNumendl;void main()float m,w,h;int s;coutm;coutw;couth;couts;motorcycle moc(m,w,h,s);moc.display();运行结果:5.代码: #include#includeusing namespace std;class Peoplepublic:People(stri

11、ng n,string s,string b,string i)number=n;sex=s;birthday=b;id=i;People()protected:string number;string sex;string birthday;string id;class Student:virtual public Peoplepublic:Student(string n,string s,string b,string i,string c):People(n,s,b,i)classNo=c;Student()protected: string classNo;class Teache

12、r:virtual public Peoplepublic:Teacher(string n,string s,string b,string i,string p,string d):People(n,s,b,i)principalship=p;department=d;Teacher()protected:string principalship;/职务string department;/部门;class Graduate:public Studentpublic:Graduate(string n,string s,string b,string i,string c,string su,string t):People(n,s,b,i),Student(n,s,b,i,c)subject=su;teacher_adviser=t;Graduate()protected:string subject;/专业string teacher_a

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号