- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
福建农林大学计算机与信息学院实验报告
系: 计算机 专业: 计算机科学与技术 年级: 2009级
姓名: 学号: 实验室号 田507、513、514 计算机号
实验时间:2011年10月25日、11月1日指导教师签字: 成绩:
实验3派生类与继承
一、实验目的和要求
(1)掌握派生类的声明与定义方法,进一步理解类的继承的概念,能够定义和使用类的继承关系。
(2)熟悉公有派生和私有派生的访问特性。
(3)了解虚基类在解决二义性问题中的作用。
二、实验内容和原理
(1)定义一个基类Animal,有私有整型成员变量age,构造其派生类dog,在其成员函数SetAge(int n)中直接给age赋值,看看会有什么问题,把age改为公有成员变量,还会有问题吗?编程试试看。
(2)定义一个基类BaseClass,有整型成员变量Number ,构造其派生类DerivedClass,观察构造函数和析构函数的执行情况。
(3)定义一个车(vehicle)基类,具有MaxSpeed、Weight等成员变量,Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类。自行车类有高度(height)等属性,汽车类有座位数(SeatNum)等属性。从bicycle和motorcar派生出摩托车(motorcycle)类,在继承过程中,注意把vehicle设置为虚基类。如果不把vehicle设置为虚基类,会有什么问题?编程试试看。
(4)设计一个用于人事管理的People(人员)类。考虑到通用性,这里只抽象出所有类型人员都具有的属性:number(编号)、sex(性别)、id(身份证号)等等。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数。
从people(人员)类派生出student(学生)类,添加属性:班号char classNo[7];从people类派生出teacher(教师)类,添加属性:职务char principalship[11]、部门char department[21]。从student类派生出graduate(研究生)类,添加属性:专业char subject[21]、导师teacher adviser;从graduate类和teacher类派出TA(助教生)类,注意虚基类的使用。重载相应的成员函数,测试这些类。
三、实验环境
联想计算机,Windows XP操作系统,Visual C++ 6.0
四、算法描述及实验步骤
(1)编写源程序。
(2)检查程序有无错误(包括语法错误和逻辑错误),有则改之。
(3)编译和连接,仔细分析编译信息,如有错误应找出原因并改正之。
(4)运行程序,分析结果。
(5)将调试好的程序保存在自己的用户目录中,文件名自定。
五、调试过程
1.
3.
4
六、实验结果
1.
2.
3.
4.
附录:
1.#includeiostream
using namespace std;
class Animal
{
public:
int age;
};
class dog:public Animal
{
public:
void SetAge(int n)
{
age=n;
}
void display();
};
void dog::display()
{
coutthis dog is age years.endl;
}
int main()
{
dog d;
d.SetAge(5);
d.display();
return 0;
}
2. #includeiostream
using namespace std;
class BaseClass
{
public:
BaseClass(int i)
{
Number=i;
coutNumber=Numberendl;
}
~BaseClass()
{
coutdestructing BaseClassendl;
}
private:
int Number;
};
class DerivedClass :public BaseClass
{
public:
DerivedClass(int i,int j);
~DerivedClass();
private:
int b;
};
DerivedClass::DerivedCl
文档评论(0)