函数重载与函数重写(有的书也叫做“覆盖”)的区别

函数重载与函数重写(有的书也叫做“覆盖”)的区别

重载(overload)和重写(overried,有的书也叫做“覆盖”)的区别?

常考的题目。从定义上来说:

重载:是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

重写:是指子类重新定义复类虚函数的方法。

从实现原理上来说:

重载:编译器根据函数不同的参数表,对同名函数的名称做修饰,然后这些同名函数就成了不同的函数(至少对于编译器来说是这样的)。如,有两个同名函数:function func(p:integer):integer;和function func(p:string):integer;。那么编译器做过修饰后的函数名称可能是这样的:int_func、str_func。对于这两个函数的调用,在编译器间就已经确定了,是静态的。也就是说,它们的地址在编译期就绑定了(早绑定),因此,重载和多态无关!

重写:和多态真正相关。当子类重新定义了父类的虚函数后,父类指针根据赋给它的不同的子类指针,动态的调用属于子类的该函数,这样的函数调用在编译期间是无法确定的(调用的子类的虚函数的地址无法给出)。因此,这样的函数地址是在运行期绑定的(晚绑定)。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114826.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PLSQL Developer 9 绿色版

    PLSQL Developer 9 绿色版

    2021年8月13日
    76
  • IOS应用开发-数据库创建「建议收藏」

    IOS应用开发-数据库创建

    2022年3月4日
    27
  • 决策树—回归[通俗易懂]

    决策树—回归[通俗易懂]核心:划分点选择+输出值确定。一、概述决策树是一种基本的分类与回归方法,本文叙述的是回归部分。回归决策树主要指CART(classificationandregressiontree)算法,内部结点特征的取值为“是”和“否”,为二叉树结构。所谓回归,就是根据特征向量来决定对应的输出值。回归树就是将特征空间划分成若干单元,每一个划分单元有一个特定的输出。因为每个结点都是“是”…

    2022年8月21日
    11
  • google cloud platform官网_ai智能体验店免费送

    google cloud platform官网_ai智能体验店免费送一、GoogleCloudPlatform(GCP)简介GoogleCloudPlatform(以下简称GCP)是Google提供的云平台,。Google云平台提供很多功能,包括计算服务,存储服务,网络服务,大数据服务,人工智能服务,以及谷歌的产品等,可以用来搭建加速服务,网站和存储数据等等。本文将介绍如何申请GCP一年的免费试用、Linux服务器环境搭建。Docker环境搭建…

    2025年8月11日
    1
  • navicat15.0.23激活码【注册码】

    navicat15.0.23激活码【注册码】,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月20日
    185
  • ettercap做arp欺骗和dns欺骗—–详细教程

    ettercap做arp欺骗和dns欺骗—–详细教程本教程仅供学习使用,不得用于非法途径,我概不负责!!!!!!一年前玩过ettercap做arp欺骗和dns欺骗的实验,都忘记怎么操作的了,哈哈,现在重新整理下资料,方便小伙伴学习。 工具介绍: Ettercap:刚开始只是作为一个网络嗅探器,但在开发过程中,它获得了越来越多的功能,在中间的攻击人方面,是一个强大而又灵活的工具。它支持很多种协议(即使是加密的)…

    2022年6月28日
    51

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号