实验三派生类与继承.docx
- 文档编号:12317609
- 上传时间:2023-04-18
- 格式:DOCX
- 页数:16
- 大小:54.43KB
实验三派生类与继承.docx
《实验三派生类与继承.docx》由会员分享,可在线阅读,更多相关《实验三派生类与继承.docx(16页珍藏版)》请在冰豆网上搜索。
实验三派生类与继承
实验三派生类与继承
一、实验目的
1、学习类的继承,能够定义和使用类的继承关系。
2、学习派生类的声明与定义方法。
3、掌握类的定义和对象的声明。
4、熟悉公有派生和私有派生的访问特性。
5、掌握派生类构造函数和析构函数的执行顺序。
6、掌握利用访问声明调整基类成员在派生类中的访问属性。
二、试验内容
1、下面的程序可以输出ASCII字符与所对应的数字的对照表。
修改下列程序,使其可以输出字母a到z(或任意两个字符间)与所对应的数字的对照表。
classtable
{
public:
table(intp)
{
i=p;
}
voidascii(void);
protected:
inti;
};
voidtable:
:
ascii(void)
{
intk=1;
for(;i<127;i++)
{
cout< if((k)%12==0) cout<<"\n"; k++; } cout<<"\n"; } classder_table: publictable { public: der_table(intp,char*m): table(p) { c=m; } voidprint(void); protected: char*c; }; voidder_table: : print(void) { cout< table: : ascii(); } intmain() { der_tableobl(32,"ASCIIvalue---char"); obl.print(); return0; } 提示: 修改后的主程序为: intmain() { der_tableob('a','z',"ASCIIvalue---char"); ob.print(); return0; } 代码: #include classtable { public: table(intp) { i=p; } voidascii(void); protected: inti; }; voidtable: : ascii(void) { intk=1; for(;i<123;i++) { cout< if((k)%12==0) cout< k++; } cout< } classder_table: publictable { public: der_table(intp,char*m): table(p) { c=m; } voidprint(void); protected: char*c; }; voidder_table: : print(void) { cout< table: : ascii(); } intmain() { der_tableob('a',"ASCIIvalue---char"); ob.print(); return0; } 2、已有类Time和Date,要求设计一个派生类Birthtime,它继承类Time和Date,并且增加一个数据成员Childname用于表示小孩的名字,同时设计主程序显示一个小孩的出生时间和名字。 #include #include classTime { public: Time(inth,intm,ints) { hours=h; minutes=m; seconds=s; } voiddisplay() { cout<<"出生时间: "< } protected: inthours,minutes,seconds; }; classDate { public: Date(intm,intd,inty) { month=m; day=d; year=y; } voiddisplay() { cout<<"出生年月: "< } protected: intmonth,day,year; }; classBirthtime: publicDate,publicTime { public: Birthtime(char*name,intmon,intd,inty,inth,intm,ints): Date(mon,d,y),Time(h,m,s) { Childname=newchar[strlen(name)+1]; strcpy(Childname,name); } ~Birthtime() { delete[]Childname; } voidprint() { cout<<"小孩的名字是: "< Date: : display(); Time: : display(); } private: char*Childname; }; voidmain() { Birthtimea("yansen",2,26,1997,0,0,0); a.print(); } 3、编写一个学生和教师的数据输入和显示程序。 学生数据有编号、姓名、性别、年龄、系别和成绩,教师数据有编号、姓名、性别、年龄、职称和部门。 要求将编号、姓名、性别、年龄的输入和显示设计成一个类Person,并作为学生类Student和教师类Teacher的基类。 #include classPerson { char*name; char*sex; intage; public: Person(char*n,char*s,inta) { name=n; sex=s; age=a; } ~Person() { delete[]name; } voidprint() { cout<<"姓名: "< "< "< } }; classStudent: publicPerson { char*sno; char*xi; doublefen; public: Student(char*sn,char*x,doublef,char*n,char*s,inta): Person(n,s,a) { sno=sn; xi=x; fen=f; } voidprint() { cout<<"学生的编号: "< "< "< Person: : print(); } }; classTeacher: publicPerson { char*num; char*job; intdepart; public: Teacher(char*nu,char*j,intd,char*n,char*s,inta): Person(n,s,a) { num=nu; job=j; depart=d; } voidprint() { cout<<"老师的编号: "< "< "< Person: : print(); } }; intmain() { Studentm("160227","xinji",100,"yan","boy",21); m.print(); Teacherb("0101","VC",101,"wang","gril",35); b.print(); return0; } 4、给出下面的基类: classarea { protected: doubleheight; doublewidth; public: area(doubleh,doublew) { height=h; width=w; } virtualdoublegetarea()=0; }; 【要求】 (1)建立基类area的俩个派生类rectangle与isosceles,让每一个派生类都包含一个函数getarea(),分别用来返回矩形与三角形的面积。 用构造函数对height与width进行初始化。 (2)写出主程序,用来求height与width分别为10.0与5.0的矩形面积,以及求height与width分别为4.0与6.0的三角形面积。 (3)要求通过使用基类指针访问虚函数的方法(即运行时的多态性)分别求出矩形和三角形面积。 #include classarea { protected: doubleheight; doublewidth; public: area(doubleh,doublew) { height=h; width=w; } virtualdoublegetarea()=0; }; classrectangle: publicarea { public: rectangle(doubleh,doublew): area(h,w) {} virtualdoublegetarea() { cout<<"矩形的长是: "< "< cout<<"矩形的面积是: "< return0; } }; classisosceles: publicarea { public: isosceles(doubleh,doublew): area(h,w) {} virtualdoublegetarea() { cout<<"三角形的底是: "< "< cout<<"三角形的面积是: "<<0.5*width*height< return0; } }; intmain() { area*p; rectanglem(10.0,5.0); isoscelesn(4.0,6.0); p=&m; p->getarea(); p=&n; p->getarea(); return0; } 5、编写一个程序,递归调用被继承的基类成员函数,实现求素数的功能 #include classA{ public: A(inti) { m=i; } intisprime(inti); protected: intm; }; intA: : isprime(inti) { intk; for(k=2;k { if(m%k==0) return0; elsereturn1; } } classprime: publicA{ public: prime(inti=0): A(i) { } }; intmain(void) { intn; cout<<"请输入需要判断的数"< cin>>n; primeobj(n); if(obj.isprime(3)) cout< else cout< return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验 派生 继承