西安交大C++程序设计第九章作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安交通大学实验报告
课程__计算机程序设计__实验名称__继承__第 1 页共页
系别____ ______ 实验日期 2014 年 5 月日
专业班级__ ___组别_____________ 实验报告日期 2014 年月日
姓名___ ______学号_ _ 报告退发 ( 订正、重做 ) 同组人_________________________________ 教师审批签字
一、实验目的
熟练继承的用法,进一步训练类的编程,并练习不同继承方式下对基类的成员的访问的控制。
二、实验内容
(一)第一题:从类Person中派生出一个教师类,新增的属性有:专业、职称和主讲课程(一门),并为这些属性定义相应的方法。
1.源程序代码:
#include
using namespace std;
class Person
{
protected:
char *Name;
char Sex;
int Age;
public:
Person()
{
Name="csj";
Sex='M';
Age=18;
}
Person(char *name,char sex,int age)
{
Register(name,sex,age);
}
~Person()
{
delete []Name;
}
void Register(char *name,char sex,int age)
{
int m=strlen(name);
Name=new char[m+1];
strcpy(Name,name);
Sex=sex;;
Age=age;
}
void print()
{
cout<<"姓名:"< } }; class Teacher:public Person { protected: char *zhuanye; char *zhicheng; char *course; public: Teacher(); Teacher(char*,char,int,char*,char*,char*); void Register(char*,char,int,char*,char*,char*); ~Teacher(); void print(); }; Teacher::Teacher() { Person::Register("罗先觉",'M',61); strcpy(zhuanye,"电气工程及其自动化"); strcpy(zhicheng,"教授"); strcpy(course,"电路"); } Teacher::Teacher(char *name,char sex,int age,char *zy,char *zc,char *cor) { Register(name,sex,age,zy,zc,cor); } void Teacher::Register(char *name,char sex,int age,char *zy,char *zc,char *cor) { Person::Register(name,sex,age); zhuanye=new char[strlen(zy)+1]; strcpy(zhuanye,zy); zhicheng=new char[strlen(zc)+1]; strcpy(zhicheng,zc); course=new char[strlen(cor)+1]; strcpy(course,cor); } Teacher::~Teacher() { delete []zhuanye; delete []zhicheng; delete []course; } void Teacher::print() { cout<<"姓名:"< } int main() { Person person; ("csj",'M',18); (); Teacher teacher("lll",'M',56,"math","jiaoshou","gaoshu"); (); ("某某",'M',58,"数学","教授","高等数学"); (); return 0; } 2.实验结果: (二)第二题:第二题:许多研究生既有学生的属性,又有教师的属性。试通过多重继承说明一个研究生类。 1.源程序代码: 验结果: (三)第三题:修改例9-5,从Point类中派生出一个Line类。Line 类增加一个数据成员EndPoint计算线的长度。试比较一下与直接使用Point类来构造Line类的不同之处。 1.源程序代码:(用了三个文件) 验结果: