[工学]面向对象程序设计语言C++第07章 虚函数和多态性.pptVIP

[工学]面向对象程序设计语言C++第07章 虚函数和多态性.ppt

  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文档。上传文档
查看更多
[工学]面向对象程序设计语言C第07章虚函数和多态性

单界面、多实现 class figure { protected: float x,y; ? public: ? void set_dim(float i, float j=0) ? { x=i; y=j; } virtual void show_area() ? { cout “No area \n”; } ? }; ? ? class triangle : public figure ? { public: ? void show_area() ? { cout x* 0.5* y “\n”; } ? }; ? class square : public figure{ ? public: ? void show_area() ? {cout x * y “\n”; } ? }; ? class circle : public figure { ? public: ? void show_area() ? { ? cout 3.14 * x * x; ? } ? }; ? void main() ?{ ? figure * p; triangle t;square s;circle c; ? p=t; ? p-set_dim(10.0, 5.0); ? p-show_area(); p=s; ? p-set_dim(10.0, 5.0); ? p-show_area(); ? p=c; ? p-set_dim(9.0); ? p-show_area(); ?} 各个派生类共享基类函数 set_dim(float i, float j=0); 而对于计算面积,各个实际图形有不同的算法 square、triangle和circle具有相同的界面 show_area() 但它们对应不同的实现方法 所以,函数show_area( )定义为虚函数。 如果希望通过基类指针或者引用访问派生类成员函数, 但基类功能比较抽象或者不能确定功能, 可以将基类定义为抽象类,即只定义函数名字,没有函数体,具体功能由派生类添加 用面向对象方法实现一个异质链表。 异质是指链表中各表项内容的类型不要求相同 (1)以大学环境为例,这里包括学生、职员和教师。 希望对这些人的信息进行管理(所有的人员信息记录在一个链表中)。 学生:姓名、年龄、身份证号码、平均成绩。 职员:姓名、年龄、身份证号码、小时工资。 教师:姓名、年龄、身份证号码、年工资。 要求能实现三个操作: ①插入。向异质链表中增加一个学生、职员或教师的信息。 ②删除。从链表中删除一个学生、职员和教师的信息。 ③打印。显示链表中所有的信息。 (2)对于一些既是学生又是教师双重身份的人,应能单独记录之。 (3)当以上系统设计完成后,如果希望增加其他人员的派生类(如院长、校长或系主任等),望能给出相应的派生类。 class Person{ char * name;int age;char * id; public: void out_base_inf () {coutnameageid;} virtual out_self_inf()=0; }; class Stu:virtual public Person{ int grade;float ave; public: void out_self_inf() {cout gradeave;} }; class Tea:virtual public Person{ float year_salary; public: void out_self_inf() {cout year_salary;} }; class Worker : public Person{ float hour_salary; public: void out_self_inf() {cout hour_salary;} }; class Stu_Tea: Stu,Tea { public: void out_self_inf(){ Stu::out_self_inf(); Tea::out_self_inf(); } }; class list ; class node { Person * p; node * next; int person_id; friend list; }; class list {int size;node * head; Public: i

文档评论(0)

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

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

版权声明书
用户编号:5024214302000003

1亿VIP精品文档

相关文档