- 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
- 剧本杀行业报告:内容创作规范与剧本市场拓展策略.docx
- 剧本杀行业区域市场区域文化特色与市场潜力分析报告.docx
- 剧本杀行业区域市场拓展实战案例研究.docx
- 剧本杀行业区域市场拓展路径与模式探索报告.docx
- 剧本杀行业区域市场竞争态势与品牌差异化策略研究报告.docx
- 剧本杀行业2025年西北区域市场市场细分领域竞争态势与品牌竞争策略分析研究报告.docx
- 剧本杀行业2025年西北市场拓展前景预测报告.docx
- 剧本杀行业2025年长沙市场发展潜力分析报告.docx
- 剧本杀行业2025年长三角市场竞争策略与布局分析.docx
- 医疗行业数据合规:2025年数据安全法实施后的合规监管挑战与应对.docx
最近下载
- 螺杆空气压缩机排气含油量高原因分析和解决措施.pptx VIP
- GBT51121-2015 风力发电工程施工与验收规范.doc VIP
- 螺杆压缩机排气温度高原因分析.doc VIP
- 部编版(2024)道德与法治一年级下册道德与法治第二单元《我们一起长大》全单元教学课件.pptx
- 合成氨压缩机温度波动原因分析.docx VIP
- 2024年03月云南省特种设备安全检测研究院人员招考聘用编制外工作人员9人笔试历年高频考点(难、易错点荟萃)附带答案详解.docx VIP
- 学堂在线大国航母与舰载机2025秋答案.docx
- 离心式压缩机轴瓦温度波动原因探析及解决措施.pdf VIP
- TCBDA55-2021住宅室内装饰装修工程质量验收标准.pdf VIP
- T/CSPSTC 41-2019钢结构建筑施工测量及监测技术规范.pdf
文档评论(0)