



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
overload 翻译过来就是 超载 过载 重载 超出标准负荷 override 翻译过来是 重 置 覆盖 使原来的失去效果 先来说说重载的含义 在日常生活中我们经常要清洗一些东西 比如洗车 洗衣服 尽管 我们说话的时候并没有明确地说用洗车的方式来洗车 或者用洗衣服的方式来洗一件衣服 但是谁也不会用洗衣服的方式来洗一辆车 否则等洗完时车早就散架了 我们并不要那么 明确地指出来就心知肚明 这就有重载的意思了 在同一可访问区内被声名的几个具有不 同参数列的 参数的类型 个数 顺序不同 同名函数 程序会根据不同的参数列来确定 具体调用哪个函数 这种机制叫重载 重载不关心函数的返回值类型 这里 重载 的 重 的意思不同于 轻重 的 重 它是 重复 重叠 的意思 例如在同一可访问区内有 double calculate double double calculate double double double calculate double int double calculate int double double calculate int float calculate float float calculate double 六个同名函数 calculate 中任两个均构成重载 和 也能构成重载 而 和 却不能构成重载 因为 和 的参数相同 覆盖是指派生类中存在重新定义的函数 其函数名 参数列 返回值类型必须同父类中的 相对应被覆盖的函数严格一致 覆盖函数和被覆盖函数只有函数体 花括号中的部分 不 同 当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本 而不是父类中 的被覆盖函数版本 这种机制就叫做覆盖 下面我们从成员函数的角度来讲述重载和覆盖的区别 成员函数被重载的特征有 1 相同的范围 在同一个类中 2 函数名字相同 3 参数不同 4 virtual 关键字可有可无 覆盖的特征有 1 不同的范围 分别位于派生类与基类 2 函数名字相同 3 参数相同 4 基类函数必须有 virtual 关键字 比如 在下面的程序中 include class Base public void f int x cout Base f int x endl void f float x cout Base f float x endl virtual void g void cout Base g void endl class Derived public Base public virtual void g void cout Derived g void f 42 运行结果 Base f int 42 pb f 3 14f 运行结果 Base f float 3 14 pb g 运行结果 Derived g void 函数 Base f int 与 Base f float 相互重载 而 Base g void 被 Derived g void 覆盖 隐藏是指派生类的函数屏蔽了与其同名的基类函数 规则如下 1 如果派生类的函数与基类的函数同名 但是参数不同 此时 不论有无 virtual 关键字 基类的函数将被隐藏 注意别与重载混淆 2 如果派生类的函数与基类的函数同名 并且参数也相同 但是基类函数没有 virtual 关 键字 此时 基类的函数被隐藏 注意别与覆盖混淆 比如 在下面的程序中 include class Base public virtual void f float x cout Base f float x endl void g float x cout Base g float x endl void h float x cout Base h float x endl class Derived public Base public virtual void f float x cout Derived f float x endl void g int x cout Derived g int x endl void h float x cout Derived h float x f 3 14f 运行结果 Derived f float 3 14 pd f 3 14f 运行结果 Derived f float 3 14 Bad behavior depends on type of the pointer pb g 3 14f 运行结果 Base g float 3 14 pd g 3 14f 运行结果 Derived g int 3 Bad behavior depends on type of the pointer pb h 3 14f 运行结果 Base h float 3 14 pd h 3 14f 运行结果 Derived h float 3 14 请大家注意 f 函数属于覆盖 而 g 与 h 属于隐藏 从上面的运行结果 我们可以注意 到在覆盖中 用基类指针和派生类指针调用函数 f 时 系统都是执行的派生类函数 f 而 非基类的 f 这样实际上就是完成的 接口 功能 而在隐藏方式中 用基类指针和派生类 指针调用函数 f 时 系统会进行区分 基类指针调用时 系统执行基类的 f 而派生类指 针调用时 系统 隐藏 了基
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 日照市中石油2025秋招笔试模拟题含答案市场营销与国际贸易岗
- 2025年福建省龙岩市第一医院招聘7人模拟试卷及完整答案详解
- 2025年新联兴职业学校(邯郸永年校区)公开招聘教师62名模拟试卷及一套完整答案详解
- 2025年皖南医学院第二附属医院招聘编外28人模拟试卷及答案详解(考点梳理)
- 2025年4月浙江海宁市中心医院(浙江省人民医院海宁医院)招聘4人模拟试卷及1套完整答案详解
- 土地承包转让合同(集合15篇)
- 2025年安徽省高校毕业生三支一扶计划招募笔试考试大纲模拟试卷及一套参考答案详解
- 2025年细胞治疗产品临床试验审批流程与临床试验报告评价报告
- 2025年地热能源供暖设备技术创新与市场潜力报告
- 2025年文化旅游演艺项目市场细分与品牌建设研究报告
- 广东电网公司海南电网公司南网能源公司2025年9月社会招聘笔试参考题库附带答案详解
- 2025年储能技术在电力系统需求侧响应中的应用报告
- LED交通诱导屏运行维护手册
- 2025年时事政治考试100题(含参考答案)
- 穴位按摩法操作评分标准
- 城乡供水一体化项目(一期)-给水工程施工图设计说明
- NISP一级考前模拟训练题库200题(含答案)
- CT检查设备十大品牌简介
- (完整版)最实用小学英语单词总表(含音标、单词默写表)
- 项目产品研发各阶段质量控制输出文件
- 述情障碍的社会根源
评论
0/150
提交评论