- 1、本文档共85页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
虚函数 增加子类方法的缺点 仅仅为了与继承而来的方法相区别,就在子类中引入一个新方法,那么在父类与其它子类以及该子类的子类中也出现类似的情况,系统中就会出现很多不同的方法名,使得类的定义难以理解,损害了继承的自然性。 像这样的方法,子类不管是否真正需要都得继承,导致越是低层的子类承受的此类负担越重,从而难于控制那些语法上正确而语义上不正确的消息传递。 虚函数 用数据成员加以控制 class Employee{ char *name; int age; protected: int retireAge; public: void changeAge(int newAge); void setRetireAge(int newRetireAge) void retire() Employee(char* n, int a); ~Employee(); }; #include”employee.h” class Manager:public Employee{ int level; public: void changeLevel(int l); Manager(char* n,int a,int l); ~Manager(); }; #include”employee.h” void Employee::retire() { if(agereretireAge) delete this; } 虚函数 该方法意味着要修改父类,并且只是为了满足程序设计的需要而不是应用的需要。如果父类的子类都提出此类要求,父类将被改的面目全非。 在OOP中应采用这样的原则:对别人写的或你继承的东西,如果不满意,先继承下来,在此基础上写适合要求的程序,而不是先考虑如何修改继承来的程序。 虚函数 要求: 当子类对父类的全盘继承不能适应应用要求时,能不能有选择的继承,而不改变父类的基本结构。 重置的基本思想是:通过一种动态联编机制的支持,使得子类在继承父类接口定义的前提下,用适合自己要求的实现去置换父类中的相应实现(保持父类中特定方法的语法,而只改变其语义) 虚函数 3 C++中的实现 虚拟函数:virtual functions class Employee{ char *name; protected: int age; public: void changeAge(int newAge); virtual void retire() Employee(char* n, int a); ~Employee(); }; #include”employee.h” class Manager:public Employee{ int level; public: void changeLevel(int l); void retire(); Manager(char* n,int a,int l); ~Manager(); }; #include”employee.h” void Employee::retire() { if(age55) delete this; } #include”manager.h” void Manager::retire() {if(age60) delete this; } 允许重置 重置声明 在子类中重新定义的函数,必需与基类中的虚函数的函数名、函数类型、参数个数和参数类型完全相同。 定义为虚函数的成员函数不能够在子类中被进行函数覆盖。 虚函数 虚函数 虚函数的特点 子类不改变父类中已有方法的接口定义 #include”employee.h” #include”manager.h” Void userFun1() {Employee m1(“Richard”,54); Manager *m2=new Employee(“stevin”,61,3); … m1.retire(); m2-retire(); … } 虚函数 class A {public: int a; void display(); }; class B:public A {public: void display(); … }; 虚函数与子类覆盖父类函数的区别 main() {A* a1; B b1; a1=b1; a1- display(); … } 这时
您可能关注的文档
- 第三节+梯度磁场系统(设备)预案.ppt
- 第三节CATIA_V5__绘制草图预案.ppt
- 第二章_细胞的基本功能预案.ppt
- 第二章_药物设计的生命科学基础预案.ppt
- 第五章第二节股票行业分析题库.ppt
- 对甲苯乙酮的制备预案.docx
- 第三节白内障护理预案.ppt
- 第五章第三节细胞呼吸题库.ppt
- 对应危险物品预案.docx
- 第三节常用天然纤维的性能特征预案.ppt
- 2023人教版一年级下册数学期末测试卷【典型题】.docx
- 2023人教版一年级下册数学期中测试卷附参考答案(满分必刷).docx
- 2023人教版一年级下册数学期末测试卷【易错题】.docx
- 2023人教版一年级下册数学期中测试卷附完整答案(夺冠).docx
- 2023人教版一年级下册数学期中测试卷(综合卷).docx
- 2023人教版一年级下册数学期中测试卷附参考答案【夺分金卷】.docx
- 2023人教版一年级下册数学期中测试卷附答案(典型题).docx
- 2025年中华优秀传统文化的传承和弘扬征文篇 .pdf
- 2023人教版一年级下册数学期中测试卷(黄金题型)word版.docx
- 2023人教版一年级下册数学期中测试卷(考点精练).docx
最近下载
- QC成果-提高电气接线盒预埋一次合格率QC.ppt
- 某米三角形单跨封闭式钢屋架结构设计.docx VIP
- 新版加油站全员安全生产责任制.docx VIP
- GB 50372 - 2006炼铁机械设备工程安装验收规范.docx
- 第三方支付外文文献翻译2018.docx
- 消防设施操作员(中级监控)理论试题六有答案.docx
- 专训09 名篇名句默写《过秦论》(教师版)-2025年新高考语文一轮复习各考点满分宝鉴.docx
- 《湖北省城市地下综合管廊工程维护消耗量定额及全费用基价表》.pdf VIP
- (高清版)B/T 43981-2024 基层减灾能力评估技术规范.pdf VIP
- 冬季三防专题培训(防火防冻防中毒).pptx
文档评论(0)