实验四类的继承与派生.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四类的继承与派生

实验四、类的继承与派生 09计算机1 白杨 0929210028 1、定义1个CPeople类,其属性(保护类型)有:姓名、性别和年龄。 2、从CPeople类派生出CStudent类,增加属性:学号、入学时间和入学成绩; 3、从CPeople类派生出CTeacher类,添加属性:职务、部门和工作时间; 4、由CStudent类派生出CGraduate类,添加属性:研究方向和导师; 5、由CGraduate和CTeacher共同派生出在职研究生类CGradonWork 6、对上述类分别定义其中的构造函数和输出函数,并在主函数中定义对象,进行测试,测试的代码大致如下: CGradonWork?gradonWork(tzcer,男,32,15,2003,335,computer,tangmin,jsj,sxxy,2002-8); ?gradonWork.Print(); 其中CGradonWork?的构造函数参数分别对应的属性是一个在职的研究生对象, 其姓名为tzcer,性别为男,32岁,学号15,2003年读在职,入学成绩335,就读计算机方向, 其导师tangmin,同时tzcer也是sxxy部门,jsj专业的老师,2002-8月入职。 要求记录输出信息并说明实验步骤和解决方法! 7、问题:何为继承二义性,在本实验中哪个地方存在二义性,你是如何解决的?继承的概念:派生类拥有基类的数据成员和成员函数。 继承方式:公有继承、保护继承、私有继承。 派生类对基类成员的访问形式:通过派生类对象直接访问基类成员,在派生类成员函数中直接访问基类成员,通过基类名字限定访问被重载的基类成员名。 类对象成员的构造:先构造成员,再构造自身(调用构造函数)。 派生类对象的构造:先构造基类,再构造成员,最后构造自身(调用构造函数)。 基类构造顺序由派生层次决定:最远的基类最先构造。 成员构造顺序和定义顺序相同。 析构函数的析构顺序与构造相反。 虚拟基类在派生类中只存在一份拷贝,解决了基类数据成员的二义性问题。#includeiostream using namespace std; const int SIZE=1001; class CPeople { protected: ?char *name; ?char *sex; ?int age; public: /* CPeople() { name = new char[SIZE]; sex = new char[SIZE]; }*/ //与下面的构造函数重复 下同 ?CPeople(char* _name=No, char* _sex=No, int _age=0) ?{ ??name = new char[strlen(_name)+1]; ??if(name) strcpy(name, _name); ?? ??sex = new char[strlen(_sex)+1]; ??if(sex) strcpy(sex, _sex); ?? ??age = _age; ?} ?~CPeople() {delete []name; delete []sex;} ?char* Get_name() {return name;} ?char* Get_sex() {return sex;} ?int Get_age() {return age;} ?void Print() ?{ ??coutname :nameendl; ??coutsex :sexendl; ??coutage :ageendl; ?} }; class CStudent: public virtual CPeople //虚拟继承 CPeople为虚拟基类 { protected: ?int stu_num; ?char *intime; ?int inscore; public: ?//CStudent() {intime = new char[SIZE];} ?CStudent(char* _name=No, char* _sex=No, int _age=0, int _stu_num=0, char* _intime=0000, int _inscore=0) : ?? CPeople(_name, _sex, _age) ?? { ??? stu_num = _stu_num; ??? ??? intime = new char[strlen(_intime)+1]; ??? if(intime) strcpy(intime, _intime); ??? ??? inscore = _inscore; ?? } ?? ~CStudent() {delete []intime;} ??

文档评论(0)

xjj2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档